linux/include/linux/thread_info.h
<<
>>
Prefs
   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 */
  86
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.