📄 compat.h
字号:
/* for 2.2-kernels */ #if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0)static __inline__ void list_add_tail(struct list_head *new, struct list_head *head){ __list_add(new, head->prev, head);}#define LIST_HEAD_INIT(name) { &(name), &(name) }typedef struct wait_queue wait_queue_t;typedef struct wait_queue *wait_queue_head_t;#define DECLARE_WAITQUEUE(wait, current) \ struct wait_queue wait = { current, NULL }#define DECLARE_WAIT_QUEUE_HEAD(wait)\ wait_queue_head_t wait#define init_waitqueue_head(x) *x=NULL#define init_MUTEX(x) *(x)=MUTEX#define DECLARE_MUTEX(name) struct semaphore name=MUTEX#define DECLARE_MUTEX_LOCKED(name) struct semaphore name=MUTEX_LOCKED#define __set_current_state(state_value) \ do { current->state = state_value; } while (0)#ifdef __SMP__#define set_current_state(state_value) \ set_mb(current->state, state_value)#else#define set_current_state(state_value) \ __set_current_state(state_value)#endif#ifdef __alphaextern long __kernel_thread(unsigned long, int (*)(void *), void *);static inline long kernel_thread(int (*fn)(void *), void * arg, unsigned long flags){ return __kernel_thread(flags | CLONE_VM, fn, arg);}#undef CONFIG_APM#endif#define __init #define __exit#endif // 2.2.x#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,34)static void daemonize(void){ struct fs_struct *fs; /* * If we were started as result of loading a module, close all of the * user space pages. We don't need them, and if we didn't close them * they would be locked into memory. */ exit_mm(current); current->session = 1; current->pgrp = 1; /* Become as one with the init task */ exit_fs(current); /* current->fs->count--; */ fs = init_task.fs; current->fs = fs; atomic_inc(&fs->count);}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -