/*
* 'kernel.h' contains some often-used function prototypes etc
*/
/*
* 'kernel.h'һЩúԭ͵ȡ
*/
// ַ֤ʼڴǷޡ׷ڴ档( kernel/fork.c, 24 )
void verify_area (void *addr, int count);
// ʾں˳ϢȻѭ( kernel/panic.c, 16 )
volatile void panic (const char *str);
// ׼ӡʾ( init/main.c, 151)
int printf (const char *fmt, ...);
// ںרõĴӡϢprintf()ͬ( kernel/printk.c, 21 )
int printk (const char *fmt, ...);
// tty дָȵַ( kernel/chr_drv/tty_io.c, 290 )
int tty_write (unsigned ch, char *buf, int count);
// ͨںڴ亯( lib/malloc.c, 117)
void *malloc (unsigned int size);
// ͷָռõڴ档( lib/malloc.c, 182)
void free_s (void *obj, int size);

#define free(x) free_s((x), 0)

/*
* This is defined as a macro, but at some point this might become a
* real subroutine that sets a flag if it returns true (to do
* BSD-style accounting where the process is flagged if it uses root
* privs). The implication of this is that you should do normal
* permissions checks first, and check suser() last.
*/
/*
* 溯ԺʽģĳԳΪһӳ
* true ʱñ־ʹroot ûȨ޵Ľ˱־
* ִBSD ʽļʴζӦִгȨ޼飬
* suser()
*/
#define suser() (current->euid == 0)	// Ƿǳû
