/* *kernel : linux2.6.32.63 *file : \scripts \mod\modpost.h \scripts\mod\ modpost.c *author : davidlin * date : 2014-12-25pm *email : [email protected] or [email protected] *world : the city of SZ, in China *Ver : 000.000.001 *history : editor time do *          1) linpeng 2014-12-25 created this file!   *          2) */ /* modpost.h */#define nofail (PTR) do_nofail ( PTR), #ptr) void* do_nofail (void* ptr, const char* expr);/* end of modpost.h *//* modpost.c */void* do_nofail (void* ptr, const char* expr) { if (!ptr) fatal (" Modpost: memory allocation failure:%s.\n ", expr); return ptr;} Static struct module* new_module (char* modname) { struct module * mod; char *p, *s; mod = nofail ( malloc (sizeof (*MOD))); memset (Mod, 0, sizeof (*mod)); p = nofail (StrDup (modname)); /* strip trailing .o */    S = STRRCHR (p, '. '); if (s != null) if (strcmp (s), ". O") == 0) *s = ' /* add to list */ mod->name '; = p; mod->gpl_compatible = -1; mod-> next = modules; modules = mod; return MoD;}
Linux Kernel Programming: Defensive programming Learning for source analysis