Blame view
include/linux/kernel.h
11.6 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#ifndef _LINUX_KERNEL_H #define _LINUX_KERNEL_H /* * 'kernel.h' contains some often-used function prototypes etc */ #ifdef __KERNEL__ #include <stdarg.h> #include <linux/linkage.h> #include <linux/stddef.h> #include <linux/types.h> #include <linux/compiler.h> #include <linux/bitops.h> |
f0d1b0b30 [PATCH] LOG2: Imp... |
16 |
#include <linux/log2.h> |
1da177e4c Linux-2.6.12-rc2 |
17 18 |
#include <asm/byteorder.h> #include <asm/bug.h> |
3eb3c740f [PATCH] fix linux... |
19 20 |
extern const char linux_banner[]; extern const char linux_proc_banner[]; |
1da177e4c Linux-2.6.12-rc2 |
21 22 23 24 25 26 |
#define INT_MAX ((int)(~0U>>1)) #define INT_MIN (-INT_MAX - 1) #define UINT_MAX (~0U) #define LONG_MAX ((long)(~0UL>>1)) #define LONG_MIN (-LONG_MAX - 1) #define ULONG_MAX (~0UL) |
111ebb6e6 [PATCH] writeback... |
27 28 29 |
#define LLONG_MAX ((long long)(~0ULL>>1)) #define LLONG_MIN (-LLONG_MAX - 1) #define ULLONG_MAX (~0ULL) |
1da177e4c Linux-2.6.12-rc2 |
30 31 |
#define STACK_MAGIC 0xdeadbeef |
2ea581447 Fix 'ALIGN()' mac... |
32 33 |
#define ALIGN(x,a) __ALIGN_MASK(x,(typeof(x))(a)-1) #define __ALIGN_MASK(x,mask) (((x)+(mask))&~(mask)) |
c5e631cf6 ARRAY_SIZE: check... |
34 |
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) |
4552d5dc0 [PATCH] x86_64: r... |
35 |
#define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f)) |
930631edd [PATCH] add DIV_R... |
36 |
#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d)) |
b4cac1a02 [PATCH] FDPIC: Mo... |
37 |
#define roundup(x, y) ((((x) + ((y) - 1)) / (y)) * (y)) |
1da177e4c Linux-2.6.12-rc2 |
38 |
|
218e180e7 add upper-32-bits... |
39 40 41 42 43 44 45 46 47 |
/** * upper_32_bits - return bits 32-63 of a number * @n: the number we're accessing * * A basic shift-right of a 64- or 32-bit quantity. Use this to suppress * the "right shift count >= width of type" warning when that quantity is * 32-bits. */ #define upper_32_bits(n) ((u32)(((n) >> 16) >> 16)) |
1da177e4c Linux-2.6.12-rc2 |
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
#define KERN_EMERG "<0>" /* system is unusable */ #define KERN_ALERT "<1>" /* action must be taken immediately */ #define KERN_CRIT "<2>" /* critical conditions */ #define KERN_ERR "<3>" /* error conditions */ #define KERN_WARNING "<4>" /* warning conditions */ #define KERN_NOTICE "<5>" /* normal but significant condition */ #define KERN_INFO "<6>" /* informational */ #define KERN_DEBUG "<7>" /* debug-level messages */ extern int console_printk[]; #define console_loglevel (console_printk[0]) #define default_message_loglevel (console_printk[1]) #define minimum_console_loglevel (console_printk[2]) #define default_console_loglevel (console_printk[3]) struct completion; |
df2e71fb9 [PATCH] dump_thre... |
65 66 |
struct pt_regs; struct user; |
1da177e4c Linux-2.6.12-rc2 |
67 68 69 70 71 72 73 74 |
/** * might_sleep - annotation for functions that can sleep * * this macro will print a stack trace if it is executed in an atomic * context (spinlock, irq-handler, ...). * * This is a useful debugging help to be able to catch problems early and not |
e20ec9911 fix spelling erro... |
75 |
* be bitten later when the calling function happens to sleep when it is not |
1da177e4c Linux-2.6.12-rc2 |
76 77 |
* supposed to. */ |
f8cbd99bd [PATCH] sched: vo... |
78 79 80 81 82 83 |
#ifdef CONFIG_PREEMPT_VOLUNTARY extern int cond_resched(void); # define might_resched() cond_resched() #else # define might_resched() do { } while (0) #endif |
1da177e4c Linux-2.6.12-rc2 |
84 |
#ifdef CONFIG_DEBUG_SPINLOCK_SLEEP |
f8cbd99bd [PATCH] sched: vo... |
85 86 87 |
void __might_sleep(char *file, int line); # define might_sleep() \ do { __might_sleep(__FILE__, __LINE__); might_resched(); } while (0) |
1da177e4c Linux-2.6.12-rc2 |
88 |
#else |
f8cbd99bd [PATCH] sched: vo... |
89 |
# define might_sleep() do { might_resched(); } while (0) |
1da177e4c Linux-2.6.12-rc2 |
90 |
#endif |
368a5fa1f [PATCH] remove un... |
91 |
#define might_sleep_if(cond) do { if (cond) might_sleep(); } while (0) |
f8cbd99bd [PATCH] sched: vo... |
92 |
|
1da177e4c Linux-2.6.12-rc2 |
93 94 95 96 |
#define abs(x) ({ \ int __x = (x); \ (__x < 0) ? -__x : __x; \ }) |
e041c6834 [PATCH] Notifier ... |
97 |
extern struct atomic_notifier_head panic_notifier_list; |
1da177e4c Linux-2.6.12-rc2 |
98 99 |
extern long (*panic_blink)(long time); NORET_TYPE void panic(const char * fmt, ...) |
a586df067 x86: Support __at... |
100 |
__attribute__ ((NORET_AND format (printf, 1, 2))) __cold; |
dd287796d [PATCH] pause_on_... |
101 102 103 |
extern void oops_enter(void); extern void oops_exit(void); extern int oops_may_print(void); |
1da177e4c Linux-2.6.12-rc2 |
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
fastcall NORET_TYPE void do_exit(long error_code) ATTRIB_NORET; NORET_TYPE void complete_and_exit(struct completion *, long) ATTRIB_NORET; extern unsigned long simple_strtoul(const char *,char **,unsigned int); extern long simple_strtol(const char *,char **,unsigned int); extern unsigned long long simple_strtoull(const char *,char **,unsigned int); extern long long simple_strtoll(const char *,char **,unsigned int); extern int sprintf(char * buf, const char * fmt, ...) __attribute__ ((format (printf, 2, 3))); extern int vsprintf(char *buf, const char *, va_list) __attribute__ ((format (printf, 2, 0))); extern int snprintf(char * buf, size_t size, const char * fmt, ...) __attribute__ ((format (printf, 3, 4))); extern int vsnprintf(char *buf, size_t size, const char *fmt, va_list args) __attribute__ ((format (printf, 3, 0))); extern int scnprintf(char * buf, size_t size, const char * fmt, ...) __attribute__ ((format (printf, 3, 4))); extern int vscnprintf(char *buf, size_t size, const char *fmt, va_list args) __attribute__ ((format (printf, 3, 0))); |
e905914f9 [PATCH] Implement... |
124 125 |
extern char *kasprintf(gfp_t gfp, const char *fmt, ...) __attribute__ ((format (printf, 2, 3))); |
11443ec7d Add kvasprintf() |
126 |
extern char *kvasprintf(gfp_t gfp, const char *fmt, va_list args); |
1da177e4c Linux-2.6.12-rc2 |
127 128 129 130 131 132 133 134 135 |
extern int sscanf(const char *, const char *, ...) __attribute__ ((format (scanf, 2, 3))); extern int vsscanf(const char *, const char *, va_list) __attribute__ ((format (scanf, 2, 0))); extern int get_option(char **str, int *pint); extern char *get_options(const char *str, int nints, int *ints); extern unsigned long long memparse(char *ptr, char **retptr); |
5e3766138 [PATCH] symbol_pu... |
136 |
extern int core_kernel_text(unsigned long addr); |
1da177e4c Linux-2.6.12-rc2 |
137 138 |
extern int __kernel_text_address(unsigned long addr); extern int kernel_text_address(unsigned long addr); |
04a2e6a5c [PATCH] pid: make... |
139 140 |
struct pid; extern struct pid *session_of_pgrp(struct pid *pgrp); |
1da177e4c Linux-2.6.12-rc2 |
141 |
|
df2e71fb9 [PATCH] dump_thre... |
142 |
extern void dump_thread(struct pt_regs *regs, struct user *dump); |
d59745ce3 [PATCH] clean up ... |
143 |
#ifdef CONFIG_PRINTK |
1da177e4c Linux-2.6.12-rc2 |
144 145 146 |
asmlinkage int vprintk(const char *fmt, va_list args) __attribute__ ((format (printf, 1, 0))); asmlinkage int printk(const char * fmt, ...) |
a586df067 x86: Support __at... |
147 |
__attribute__ ((format (printf, 1, 2))) __cold; |
d59745ce3 [PATCH] clean up ... |
148 149 150 151 152 153 |
#else static inline int vprintk(const char *s, va_list args) __attribute__ ((format (printf, 1, 0))); static inline int vprintk(const char *s, va_list args) { return 0; } static inline int printk(const char *s, ...) __attribute__ ((format (printf, 1, 2))); |
a586df067 x86: Support __at... |
154 |
static inline int __cold printk(const char *s, ...) { return 0; } |
d59745ce3 [PATCH] clean up ... |
155 |
#endif |
1da177e4c Linux-2.6.12-rc2 |
156 157 |
unsigned long int_sqrt(unsigned long); |
1da177e4c Linux-2.6.12-rc2 |
158 159 |
extern int printk_ratelimit(void); extern int __printk_ratelimit(int ratelimit_jiffies, int ratelimit_burst); |
f46c48335 [PATCH] Add print... |
160 161 |
extern bool printk_timed_ratelimit(unsigned long *caller_jiffies, unsigned int interval_msec); |
1da177e4c Linux-2.6.12-rc2 |
162 163 164 165 166 167 168 169 170 171 172 173 174 |
static inline void console_silent(void) { console_loglevel = 0; } static inline void console_verbose(void) { if (console_loglevel) console_loglevel = 15; } extern void bust_spinlocks(int yes); |
e3e8a75d2 [PATCH] Extract a... |
175 |
extern void wake_up_klogd(void); |
1da177e4c Linux-2.6.12-rc2 |
176 |
extern int oops_in_progress; /* If set, an oops, panic(), BUG() or die() is in progress */ |
aa7271076 [PATCH] the sched... |
177 |
extern int panic_timeout; |
1da177e4c Linux-2.6.12-rc2 |
178 |
extern int panic_on_oops; |
8da5adda9 [PATCH] x86: Allo... |
179 |
extern int panic_on_unrecovered_nmi; |
1da177e4c Linux-2.6.12-rc2 |
180 181 182 183 184 185 186 187 188 189 190 |
extern int tainted; extern const char *print_tainted(void); extern void add_taint(unsigned); /* Values used for system_state */ extern enum system_states { SYSTEM_BOOTING, SYSTEM_RUNNING, SYSTEM_HALT, SYSTEM_POWER_OFF, SYSTEM_RESTART, |
729b4d4ce [ACPI] fix reboot... |
191 |
SYSTEM_SUSPEND_DISK, |
1da177e4c Linux-2.6.12-rc2 |
192 193 194 195 196 197 198 199 |
} system_state; #define TAINT_PROPRIETARY_MODULE (1<<0) #define TAINT_FORCED_MODULE (1<<1) #define TAINT_UNSAFE_SMP (1<<2) #define TAINT_FORCED_RMMOD (1<<3) #define TAINT_MACHINE_CHECK (1<<4) #define TAINT_BAD_PAGE (1<<5) |
34f5a3989 [PATCH] Add TAINT... |
200 |
#define TAINT_USER (1<<6) |
bcdcd8e72 Report that kerne... |
201 |
#define TAINT_DIE (1<<7) |
1da177e4c Linux-2.6.12-rc2 |
202 |
|
a586df067 x86: Support __at... |
203 |
extern void dump_stack(void) __cold; |
1da177e4c Linux-2.6.12-rc2 |
204 |
|
99eaf3c45 lib/hexdump |
205 206 207 208 209 |
enum { DUMP_PREFIX_NONE, DUMP_PREFIX_ADDRESS, DUMP_PREFIX_OFFSET }; |
c79092349 hexdump: more out... |
210 211 212 213 214 215 216 217 |
extern void hex_dump_to_buffer(const void *buf, size_t len, int rowsize, int groupsize, char *linebuf, size_t linebuflen, bool ascii); extern void print_hex_dump(const char *level, const char *prefix_str, int prefix_type, int rowsize, int groupsize, void *buf, size_t len, bool ascii); extern void print_hex_dump_bytes(const char *prefix_str, int prefix_type, void *buf, size_t len); |
99eaf3c45 lib/hexdump |
218 |
#define hex_asc(x) "0123456789abcdef"[x] |
1da177e4c Linux-2.6.12-rc2 |
219 |
#ifdef DEBUG |
1cc6daf23 pr_debug() should... |
220 |
/* If you are writing a driver, please use dev_dbg instead */ |
1da177e4c Linux-2.6.12-rc2 |
221 222 223 |
#define pr_debug(fmt,arg...) \ printk(KERN_DEBUG fmt,##arg) #else |
8b2a1fd1b [PATCH] pr_debug:... |
224 225 226 227 |
static inline int __attribute__ ((format (printf, 1, 2))) pr_debug(const char * fmt, ...) { return 0; } |
1da177e4c Linux-2.6.12-rc2 |
228 229 230 231 232 233 234 235 236 237 238 239 240 241 |
#endif #define pr_info(fmt,arg...) \ printk(KERN_INFO fmt,##arg) /* * Display an IP address in readable format. */ #define NIPQUAD(addr) \ ((unsigned char *)&addr)[0], \ ((unsigned char *)&addr)[1], \ ((unsigned char *)&addr)[2], \ ((unsigned char *)&addr)[3] |
46b86a2da [NET]: Use NIP6_F... |
242 |
#define NIPQUAD_FMT "%u.%u.%u.%u" |
1da177e4c Linux-2.6.12-rc2 |
243 244 245 246 247 248 249 250 251 252 |
#define NIP6(addr) \ ntohs((addr).s6_addr16[0]), \ ntohs((addr).s6_addr16[1]), \ ntohs((addr).s6_addr16[2]), \ ntohs((addr).s6_addr16[3]), \ ntohs((addr).s6_addr16[4]), \ ntohs((addr).s6_addr16[5]), \ ntohs((addr).s6_addr16[6]), \ ntohs((addr).s6_addr16[7]) |
46b86a2da [NET]: Use NIP6_F... |
253 |
#define NIP6_FMT "%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x" |
9343e79a7 [IPV6]: Preserve ... |
254 |
#define NIP6_SEQFMT "%04x%04x%04x%04x%04x%04x%04x%04x" |
1da177e4c Linux-2.6.12-rc2 |
255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 |
#if defined(__LITTLE_ENDIAN) #define HIPQUAD(addr) \ ((unsigned char *)&addr)[3], \ ((unsigned char *)&addr)[2], \ ((unsigned char *)&addr)[1], \ ((unsigned char *)&addr)[0] #elif defined(__BIG_ENDIAN) #define HIPQUAD NIPQUAD #else #error "Please fix asm/byteorder.h" #endif /* __LITTLE_ENDIAN */ /* * min()/max() macros that also do * strict type-checking.. See the * "unnecessary" pointer comparison. */ #define min(x,y) ({ \ typeof(x) _x = (x); \ typeof(y) _y = (y); \ (void) (&_x == &_y); \ _x < _y ? _x : _y; }) #define max(x,y) ({ \ typeof(x) _x = (x); \ typeof(y) _y = (y); \ (void) (&_x == &_y); \ _x > _y ? _x : _y; }) /* * ..and if you can't take the strict * types, you can specify one yourself. * * Or not use min/max at all, of course. */ #define min_t(type,x,y) \ ({ type __x = (x); type __y = (y); __x < __y ? __x: __y; }) #define max_t(type,x,y) \ ({ type __x = (x); type __y = (y); __x > __y ? __x: __y; }) /** * container_of - cast a member of a structure out to the containing structure |
1da177e4c Linux-2.6.12-rc2 |
299 300 301 302 303 304 |
* @ptr: the pointer to the member. * @type: the type of the container struct this is embedded in. * @member: the name of the member within the struct. * */ #define container_of(ptr, type, member) ({ \ |
78db2ad6f include/linux: tr... |
305 306 |
const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );}) |
1da177e4c Linux-2.6.12-rc2 |
307 308 309 310 311 312 313 314 315 316 317 |
/* * Check at compile time that something is of a particular type. * Always evaluates to 1 so you may use it easily in comparisons. */ #define typecheck(type,x) \ ({ type __dummy; \ typeof(x) __dummy2; \ (void)(&__dummy == &__dummy2); \ 1; \ }) |
711a660dc [PATCH] mutex sub... |
318 319 320 321 322 323 324 325 |
/* * Check at compile time that 'function' is a certain type, or is a pointer * to that type (needs to use typedef for the function type.) */ #define typecheck_fn(type,function) \ ({ typeof(type) __tmp = function; \ (void)__tmp; \ }) |
d4d23add3 [PATCH] Common co... |
326 327 |
struct sysinfo; extern int do_sysinfo(struct sysinfo *info); |
1da177e4c Linux-2.6.12-rc2 |
328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 |
#endif /* __KERNEL__ */ #define SI_LOAD_SHIFT 16 struct sysinfo { long uptime; /* Seconds since boot */ unsigned long loads[3]; /* 1, 5, and 15 minute load averages */ unsigned long totalram; /* Total usable main memory size */ unsigned long freeram; /* Available memory size */ unsigned long sharedram; /* Amount of shared memory */ unsigned long bufferram; /* Memory used by buffers */ unsigned long totalswap; /* Total swap space size */ unsigned long freeswap; /* swap space still available */ unsigned short procs; /* Number of current processes */ unsigned short pad; /* explicit padding for m68k */ unsigned long totalhigh; /* Total high memory size */ unsigned long freehigh; /* Available high memory size */ unsigned int mem_unit; /* Memory unit size in bytes */ char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding: libc5 uses this.. */ }; |
c0398ee6c [PATCH] include/l... |
347 |
/* Force a compilation error if condition is true */ |
921717a2a [PATCH] Make BUIL... |
348 |
#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)])) |
1da177e4c Linux-2.6.12-rc2 |
349 |
|
4552d5dc0 [PATCH] x86_64: r... |
350 351 352 353 354 |
/* Force a compilation error if condition is true, but also produce a result (of value 0 and type size_t), so the expression can be used e.g. in a structure initializer (or where-ever else comma expressions aren't permitted). */ #define BUILD_BUG_ON_ZERO(e) (sizeof(char[1 - 2 * !!(e)]) - 1) |
1da177e4c Linux-2.6.12-rc2 |
355 |
/* Trap pasters of __FUNCTION__ at compile-time */ |
1da177e4c Linux-2.6.12-rc2 |
356 |
#define __FUNCTION__ (__func__) |
1da177e4c Linux-2.6.12-rc2 |
357 |
|
08e0f6a97 [PATCH] Add NUMA_... |
358 359 360 361 362 363 |
/* This helps us to avoid #ifdef CONFIG_NUMA */ #ifdef CONFIG_NUMA #define NUMA_BUILD 1 #else #define NUMA_BUILD 0 #endif |
1da177e4c Linux-2.6.12-rc2 |
364 |
#endif |