home *** CD-ROM | disk | FTP | other *** search
/ Atari FTP / ATARI_FTP_0693.zip / ATARI_FTP_0693 / Mint / mntlib32.zoo / getpages.c < prev    next >
C/C++ Source or Header  |  1992-09-22  |  1KB  |  63 lines

  1. /*
  2.  * getpagesize() for MiNT
  3.  * written by Eric R. Smith and placed in the public
  4.  * domain
  5.  */
  6.  
  7. #include <unistd.h>
  8. #include <osbind.h>
  9. #include <string.h>
  10. #include <mintbind.h>
  11.  
  12. #define DEF_PAGESIZE 1024    /* default page size for TOS */
  13.  
  14. extern int __mint;
  15.  
  16. static void memstats __PROTO((long *));
  17.  
  18. /*
  19.  * memstats: get information about memory usage, and put it into
  20.  * the 4 long words pointed to by "meminfo" as follows:
  21.  *     meminfo[0]    number of free pages
  22.  *    meminfo[1]    total number of pages being managed
  23.  *    meminfo[2]    page size
  24.  *    meminfo[3]    reserved, always 1
  25.  * works only under MiNT
  26.  */
  27.  
  28. static void
  29. memstats(meminfo)
  30.     long *meminfo;
  31. {
  32.     int olddrv;
  33.     char oldpath[128];
  34.  
  35.     olddrv = Dgetdrv();    /* save current drive */
  36.     Dsetdrv('U'-'A');    /* change to drive U: */
  37.     Dgetpath(oldpath, 0);    /* save current path for drive U: */
  38.     if (oldpath[0] == 0)
  39.         strcpy(oldpath, "\\");
  40.     Dsetpath("U:\\PROC");    /* change to the PROC directory */
  41.                 /* note that Dfree() on drive U: is sensitive
  42.                  * to the path, so we must do this!
  43.                  */
  44.  
  45.     Dfree((_DISKINFO*)meminfo, 0); /* get memory statistics */
  46.  
  47.     Dsetpath(oldpath);    /* restore old path for drive U: */
  48.     Dsetdrv(olddrv);    /* restore old drive */
  49. }
  50.  
  51. int
  52. getpagesize()
  53. {
  54.     long meminfo[4];
  55.  
  56.     if (__mint < 9)
  57.         return DEF_PAGESIZE;
  58.  
  59. /* get the page size by looking at U:\PROC */
  60.     memstats(meminfo);
  61.     return (int) meminfo[2];
  62. }
  63.