I had a private note from Mike Harris following my previous post in this thread. Mike noted the Compaq/DEC Alpha architecture uses 8K pages. He didn't say whether this is true for all OSes; as he also noted, the x86 architecture - in more recent generations - supports large 4M pages as well as the more commonly used 4K ones. (There was an excellent article in _Dr. Dobb's Journal_ some months back on using large x86 pages.) After reading his note I realized I should probably have mentioned that SUSv2-compliant[1] OSes generally will tell you the page size using sysconf: ----- cut here ----- #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(void) { long PageSize; /* Get page size in bytes */ PageSize = sysconf(_SC_PAGESIZE); if (PageSize < 0) { /* sysconf doesn't set errno, so perror isn't useful here */ fputs("error in sysconf\n", stderr); return EXIT_FAILURE; } else if (PageSize == 0) { /* sysconf doesn't set errno, so perror isn't useful here */ fputs("page size is unknown\n", stderr); return EXIT_FAILURE; } else { printf("page size in bytes: %ld\n", PageSize); } return EXIT_SUCCESS; } ----- cut here ----- Many Unixish OSes also provide a "pagesize" command which prints the page size in bytes, and a getpagesize() function which is equivalent to sysconf(_SC_PAGESIZE). They apparently originated in BSD4.2 and were picked up in SVR4. Note, though, in the context of this thread, that the page size is not likely to be a terribly useful piece of information. [1] "SUSv2" is the Single Unix Specification version 2. sysconf is a POSIX function, but _SC_PAGESIZE is not part of POSIX.2 AFAIK. Michael Wojcik michael.wojcikat_private MERANT Department of English, Miami University
This archive was generated by hypermail 2b30 : Mon Jul 02 2001 - 18:18:48 PDT