Release 4.7 include/linux/thread_info.h
/* thread_info.h: common low-level thread information accessors
*
* Copyright (C) 2002 David Howells (dhowells@redhat.com)
* - Incorporating suggestions made by Linus Torvalds
*/
#ifndef _LINUX_THREAD_INFO_H
#define _LINUX_THREAD_INFO_H
#include <linux/types.h>
#include <linux/bug.h>
struct timespec;
struct compat_timespec;
/*
* System call restart block.
*/
struct restart_block {
long (*fn)(struct restart_block *);
union {
/* For futex_wait and futex_wait_requeue_pi */
struct {
u32 __user *uaddr;
u32 val;
u32 flags;
u32 bitset;
u64 time;
u32 __user *uaddr2;
}
futex;
/* For nanosleep */
struct {
clockid_t clockid;
struct timespec __user *rmtp;
#ifdef CONFIG_COMPAT
struct compat_timespec __user *compat_rmtp;
#endif
u64 expires;
}
nanosleep;
/* For poll */
struct {
struct pollfd __user *ufds;
int nfds;
int has_timeout;
unsigned long tv_sec;
unsigned long tv_nsec;
}
poll;
};
};
extern long do_no_restart_syscall(struct restart_block *parm);
#include <linux/bitops.h>
#include <asm/thread_info.h>
#ifdef __KERNEL__
#ifdef CONFIG_DEBUG_STACK_USAGE
# define THREADINFO_GFP (GFP_KERNEL_ACCOUNT | __GFP_NOTRACK | \
__GFP_ZERO)
#else
# define THREADINFO_GFP (GFP_KERNEL_ACCOUNT | __GFP_NOTRACK)
#endif
/*
* flag set/clear/test wrappers
* - pass TIF_xxxx constants to these functions
*/
static inline void set_ti_thread_flag(struct thread_info *ti, int flag)
{
set_bit(flag, (unsigned long *)&ti->flags);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
david howells | david howells | 25 | 83.33% | 1 | 50.00% |
jeremy fitzhardinge | jeremy fitzhardinge | 5 | 16.67% | 1 | 50.00% |
| Total | 30 | 100.00% | 2 | 100.00% |
static inline void clear_ti_thread_flag(struct thread_info *ti, int flag)
{
clear_bit(flag, (unsigned long *)&ti->flags);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
david howells | david howells | 25 | 83.33% | 1 | 50.00% |
jeremy fitzhardinge | jeremy fitzhardinge | 5 | 16.67% | 1 | 50.00% |
| Total | 30 | 100.00% | 2 | 100.00% |
static inline int test_and_set_ti_thread_flag(struct thread_info *ti, int flag)
{
return test_and_set_bit(flag, (unsigned long *)&ti->flags);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
david howells | david howells | 26 | 83.87% | 1 | 50.00% |
jeremy fitzhardinge | jeremy fitzhardinge | 5 | 16.13% | 1 | 50.00% |
| Total | 31 | 100.00% | 2 | 100.00% |
static inline int test_and_clear_ti_thread_flag(struct thread_info *ti, int flag)
{
return test_and_clear_bit(flag, (unsigned long *)&ti->flags);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
david howells | david howells | 26 | 83.87% | 1 | 50.00% |
jeremy fitzhardinge | jeremy fitzhardinge | 5 | 16.13% | 1 | 50.00% |
| Total | 31 | 100.00% | 2 | 100.00% |
static inline int test_ti_thread_flag(struct thread_info *ti, int flag)
{
return test_bit(flag, (unsigned long *)&ti->flags);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
david howells | david howells | 26 | 83.87% | 1 | 50.00% |
jeremy fitzhardinge | jeremy fitzhardinge | 5 | 16.13% | 1 | 50.00% |
| Total | 31 | 100.00% | 2 | 100.00% |
#define set_thread_flag(flag) \
set_ti_thread_flag(current_thread_info(), flag)
#define clear_thread_flag(flag) \
clear_ti_thread_flag(current_thread_info(), flag)
#define test_and_set_thread_flag(flag) \
test_and_set_ti_thread_flag(current_thread_info(), flag)
#define test_and_clear_thread_flag(flag) \
test_and_clear_ti_thread_flag(current_thread_info(), flag)
#define test_thread_flag(flag) \
test_ti_thread_flag(current_thread_info(), flag)
#define tif_need_resched() test_thread_flag(TIF_NEED_RESCHED)
#if defined TIF_RESTORE_SIGMASK && !defined HAVE_SET_RESTORE_SIGMASK
/*
* An arch can define its own version of set_restore_sigmask() to get the
* job done however works, with or without TIF_RESTORE_SIGMASK.
*/
#define HAVE_SET_RESTORE_SIGMASK 1
/**
* set_restore_sigmask() - make sure saved_sigmask processing gets done
*
* This sets TIF_RESTORE_SIGMASK and ensures that the arch signal code
* will run before returning to user mode, to process the flag. For
* all callers, TIF_SIGPENDING is already set or it's no harm to set
* it. TIF_RESTORE_SIGMASK need not be in the set of bits that the
* arch code will notice on return to user mode, in case those bits
* are scarce. We set TIF_SIGPENDING here to ensure that the arch
* signal code always gets run when TIF_RESTORE_SIGMASK is set.
*/
static inline void set_restore_sigmask(void)
{
set_thread_flag(TIF_RESTORE_SIGMASK);
WARN_ON(!test_thread_flag(TIF_SIGPENDING));
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
roland mcgrath | roland mcgrath | 18 | 78.26% | 2 | 66.67% |
al viro | al viro | 5 | 21.74% | 1 | 33.33% |
| Total | 23 | 100.00% | 3 | 100.00% |
static inline void clear_restore_sigmask(void)
{
clear_thread_flag(TIF_RESTORE_SIGMASK);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
al viro | al viro | 14 | 100.00% | 1 | 100.00% |
| Total | 14 | 100.00% | 1 | 100.00% |
static inline bool test_restore_sigmask(void)
{
return test_thread_flag(TIF_RESTORE_SIGMASK);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
al viro | al viro | 15 | 100.00% | 1 | 100.00% |
| Total | 15 | 100.00% | 1 | 100.00% |
static inline bool test_and_clear_restore_sigmask(void)
{
return test_and_clear_thread_flag(TIF_RESTORE_SIGMASK);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
al viro | al viro | 15 | 100.00% | 1 | 100.00% |
| Total | 15 | 100.00% | 1 | 100.00% |
#endif /* TIF_RESTORE_SIGMASK && !HAVE_SET_RESTORE_SIGMASK */
#ifndef HAVE_SET_RESTORE_SIGMASK
#error "no set_restore_sigmask() provided and default one won't work"
#endif
#endif /* __KERNEL__ */
#endif /* _LINUX_THREAD_INFO_H */
Overall Contributors
| Person | Tokens | Prop | Commits | CommitProp |
david howells | david howells | 152 | 33.48% | 2 | 9.09% |
thomas gleixner | thomas gleixner | 77 | 16.96% | 5 | 22.73% |
al viro | al viro | 60 | 13.22% | 3 | 13.64% |
roland mcgrath | roland mcgrath | 36 | 7.93% | 3 | 13.64% |
roman zippel | roman zippel | 36 | 7.93% | 1 | 4.55% |
steven rostedt | steven rostedt | 28 | 6.17% | 1 | 4.55% |
jeremy fitzhardinge | jeremy fitzhardinge | 25 | 5.51% | 1 | 4.55% |
linus torvalds | linus torvalds | 24 | 5.29% | 1 | 4.55% |
peter zijlstra | peter zijlstra | 5 | 1.10% | 1 | 4.55% |
darren hart | darren hart | 5 | 1.10% | 1 | 4.55% |
hirofumi ogawa | hirofumi ogawa | 2 | 0.44% | 1 | 4.55% |
namhyung kim | namhyung kim | 2 | 0.44% | 1 | 4.55% |
vladimir davydov | vladimir davydov | 2 | 0.44% | 1 | 4.55% |
| Total | 454 | 100.00% | 22 | 100.00% |
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.