On Fri, 18.03.11 03:44, fykc...@gmail.com (fykc...@gmail.com) wrote: > Hi all, > > Systemd hardcode page size as 4096(in macro.h), this is not always correct: > """ Some architectures support multiple machine types with diffenent > page sizes, and some machine types even support multiple page sizes > themselves. """ > > This patch tries to detect page size runtime by sysconf(_SC_PAGESIZE), > and uses 4096 as a failsafe value. Note we need memset vec to zero > before call mincore(src/readahead-collect.c, 129) -- if the pagesize > is not correct, we may randomly record wider range or more ranges to > readahead.
Hmm, interesting. Which architecture are you using that has a page size != 4K? Please move the definition of ALIGN and page_size() and friends into util.[ch], rather the the .c files using them. "size_t get_pagesize();" is not a valid C99 function prototype. Please use "(void)" for an empty parameter list, not "()". I think it would be a really bad idea to warn each time sysconf(_SC_PAGESIZE) might fail. Also, I'd prefer not having two indirections here, so please cache the result in a function-internal static variable, so that we don't have to call sysconf() all the time. Use __tls on the variable, since clients might end up using threads and I'd prefer if we never have to think much about thread-safety of these calls if they cache stuff in static variables. Otherwise looks fine! Thanks, Lennart -- Lennart Poettering - Red Hat, Inc. _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel