1#ifndef _LINUX_KERNEL_H
2#define _LINUX_KERNEL_H
3
4
5
6
7
8#ifdef __KERNEL__
9
10#include <stdarg.h>
11#include <linux/linkage.h>
12#include <linux/stddef.h>
13
14
15
16#define barrier() __asm__ __volatile__("": : :"memory")
17
18#define INT_MAX ((int)(~0U>>1))
19#define INT_MIN (-INT_MAX - 1)
20#define UINT_MAX (~0U)
21#define LONG_MAX ((long)(~0UL>>1))
22#define LONG_MIN (-LONG_MAX - 1)
23#define ULONG_MAX (~0UL)
24
25#define STACK_MAGIC 0xdeadbeef
26
27#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
28
29#define KERN_EMERG "<0>"
30#define KERN_ALERT "<1>"
31#define KERN_CRIT "<2>"
32#define KERN_ERR "<3>"
33#define KERN_WARNING "<4>"
34#define KERN_NOTICE "<5>"
35#define KERN_INFO "<6>"
36#define KERN_DEBUG "<7>"
37
38# define NORET_TYPE
39# define ATTRIB_NORET __attribute__((noreturn))
40# define NORET_AND noreturn,
41
42#ifdef __i386__
43#define FASTCALL(x) x __attribute__((regparm(3)))
44#else
45#define FASTCALL(x) x
46#endif
47
48struct semaphore;
49
50extern struct notifier_block *panic_notifier_list;
51NORET_TYPE void panic(const char * fmt, ...)
52 __attribute__ ((NORET_AND format (printf, 1, 2)));
53NORET_TYPE void do_exit(long error_code)
54 ATTRIB_NORET;
55NORET_TYPE void up_and_exit(struct semaphore *, long)
56 ATTRIB_NORET;
57extern unsigned long simple_strtoul(const char *,char **,unsigned int);
58extern long simple_strtol(const char *,char **,unsigned int);
59extern unsigned long long simple_strtoull(const char *,char **,unsigned int);
60extern long long simple_strtoll(const char *,char **,unsigned int);
61extern int sprintf(char * buf, const char * fmt, ...);
62extern int vsprintf(char *buf, const char *, va_list);
63extern int get_option(char **str, int *pint);
64extern char *get_options(char *str, int nints, int *ints);
65extern unsigned long memparse(char *ptr, char **retptr);
66extern void dev_probe_lock(void);
67extern void dev_probe_unlock(void);
68
69extern int session_of_pgrp(int pgrp);
70
71asmlinkage int printk(const char * fmt, ...)
72 __attribute__ ((format (printf, 1, 2)));
73
74extern int console_loglevel;
75
76static inline void console_silent(void)
77{
78 console_loglevel = 0;
79}
80
81static inline void console_verbose(void)
82{
83 if (console_loglevel)
84 console_loglevel = 15;
85}
86
87#if DEBUG
88#define pr_debug(fmt,arg...) \
89 printk(KERN_DEBUG fmt,##arg)
90#else
91#define pr_debug(fmt,arg...) \
92 do { } while (0)
93#endif
94
95#define pr_info(fmt,arg...) \
96 printk(KERN_INFO fmt,##arg)
97
98
99
100
101
102#define NIPQUAD(addr) \
103 ((unsigned char *)&addr)[0], \
104 ((unsigned char *)&addr)[1], \
105 ((unsigned char *)&addr)[2], \
106 ((unsigned char *)&addr)[3]
107
108#define HIPQUAD(addr) \
109 ((unsigned char *)&addr)[3], \
110 ((unsigned char *)&addr)[2], \
111 ((unsigned char *)&addr)[1], \
112 ((unsigned char *)&addr)[0]
113
114#endif
115
116#define SI_LOAD_SHIFT 16
117struct sysinfo {
118 long uptime;
119 unsigned long loads[3];
120 unsigned long totalram;
121 unsigned long freeram;
122 unsigned long sharedram;
123 unsigned long bufferram;
124 unsigned long totalswap;
125 unsigned long freeswap;
126 unsigned short procs;
127 unsigned long totalhigh;
128 unsigned long freehigh;
129 unsigned int mem_unit;
130 char _f[20-2*sizeof(long)-sizeof(int)];
131};
132
133#endif
134