at v2.6.25 2.1 kB view raw
1/* thread_info.h: common low-level thread information accessors 2 * 3 * Copyright (C) 2002 David Howells (dhowells@redhat.com) 4 * - Incorporating suggestions made by Linus Torvalds 5 */ 6 7#ifndef _LINUX_THREAD_INFO_H 8#define _LINUX_THREAD_INFO_H 9 10#include <linux/types.h> 11 12/* 13 * System call restart block. 14 */ 15struct restart_block { 16 long (*fn)(struct restart_block *); 17 union { 18 struct { 19 unsigned long arg0, arg1, arg2, arg3; 20 }; 21 /* For futex_wait */ 22 struct { 23 u32 *uaddr; 24 u32 val; 25 u32 flags; 26 u32 bitset; 27 u64 time; 28 } futex; 29 }; 30}; 31 32extern long do_no_restart_syscall(struct restart_block *parm); 33 34#include <linux/bitops.h> 35#include <asm/thread_info.h> 36 37#ifdef __KERNEL__ 38 39/* 40 * flag set/clear/test wrappers 41 * - pass TIF_xxxx constants to these functions 42 */ 43 44static inline void set_ti_thread_flag(struct thread_info *ti, int flag) 45{ 46 set_bit(flag, (unsigned long *)&ti->flags); 47} 48 49static inline void clear_ti_thread_flag(struct thread_info *ti, int flag) 50{ 51 clear_bit(flag, (unsigned long *)&ti->flags); 52} 53 54static inline int test_and_set_ti_thread_flag(struct thread_info *ti, int flag) 55{ 56 return test_and_set_bit(flag, (unsigned long *)&ti->flags); 57} 58 59static inline int test_and_clear_ti_thread_flag(struct thread_info *ti, int flag) 60{ 61 return test_and_clear_bit(flag, (unsigned long *)&ti->flags); 62} 63 64static inline int test_ti_thread_flag(struct thread_info *ti, int flag) 65{ 66 return test_bit(flag, (unsigned long *)&ti->flags); 67} 68 69#define set_thread_flag(flag) \ 70 set_ti_thread_flag(current_thread_info(), flag) 71#define clear_thread_flag(flag) \ 72 clear_ti_thread_flag(current_thread_info(), flag) 73#define test_and_set_thread_flag(flag) \ 74 test_and_set_ti_thread_flag(current_thread_info(), flag) 75#define test_and_clear_thread_flag(flag) \ 76 test_and_clear_ti_thread_flag(current_thread_info(), flag) 77#define test_thread_flag(flag) \ 78 test_ti_thread_flag(current_thread_info(), flag) 79 80#define set_need_resched() set_thread_flag(TIF_NEED_RESCHED) 81#define clear_need_resched() clear_thread_flag(TIF_NEED_RESCHED) 82 83#endif 84 85#endif /* _LINUX_THREAD_INFO_H */