>It looks like M_WAITOK will either return non-NULL or panic; it >shouldn't be capable of returning NULL. Ideally, it shouldn't panic >either (why is it only that M_WAITOK can panic, and M_NOWAIT can't?).
Because failures for M_NOWAIT are normal (all pages may be in use, and the caller is not prepared for pages top be freed by swapping). Therefore, callers that set M_NOWAIT must be prepared for failure. OTOH, failures for M_WAITOK are abnormal, and at least for map == kmem_map (as it is for calls to kmem_malloc() from malloc()), the correct handling for failure is to panic since a full map is unlikely to become unfull and neither the caller or kmem_malloc() can know what to do to unfill it. Bruce To Unsubscribe: send mail to majord...@freebsd.org with "unsubscribe freebsd-current" in the body of the message