home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-parisc / thread_info.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  2.5 KB  |  79 lines

  1. #ifndef _ASM_PARISC_THREAD_INFO_H
  2. #define _ASM_PARISC_THREAD_INFO_H
  3.  
  4. #ifdef __KERNEL__
  5.  
  6. #ifndef __ASSEMBLY__
  7. #include <asm/processor.h>
  8.  
  9. struct thread_info {
  10.     struct task_struct *task;    /* main task structure */
  11.     struct exec_domain *exec_domain;/* execution domain */
  12.     unsigned long flags;        /* thread_info flags (see TIF_*) */
  13.     mm_segment_t addr_limit;    /* user-level address space limit */
  14.     __u32 cpu;            /* current CPU */
  15.     int preempt_count;        /* 0=premptable, <0=BUG; will also serve as bh-counter */
  16.     struct restart_block restart_block;
  17. };
  18.  
  19. #define INIT_THREAD_INFO(tsk)            \
  20. {                        \
  21.     .task        = &tsk,            \
  22.     .exec_domain    = &default_exec_domain,    \
  23.     .flags        = 0,            \
  24.     .cpu        = 0,            \
  25.     .addr_limit    = KERNEL_DS,        \
  26.     .preempt_count    = 1,            \
  27.       .restart_block    = {            \
  28.         .fn = do_no_restart_syscall    \
  29.     }                    \
  30. }
  31.  
  32. #define init_thread_info        (init_thread_union.thread_info)
  33. #define init_stack              (init_thread_union.stack)
  34.  
  35. /* thread information allocation */
  36.  
  37. #define THREAD_ORDER            2
  38. /* Be sure to hunt all references to this down when you change the size of
  39.  * the kernel stack */
  40. #define THREAD_SIZE             (PAGE_SIZE << THREAD_ORDER)
  41. #define THREAD_SHIFT            (PAGE_SHIFT + THREAD_ORDER)
  42.  
  43. #define alloc_thread_info(tsk) ((struct thread_info *) \
  44.             __get_free_pages(GFP_KERNEL, THREAD_ORDER))
  45. #define free_thread_info(ti)    free_pages((unsigned long) (ti), THREAD_ORDER)
  46.  
  47. /* how to get the thread information struct from C */
  48. #define current_thread_info()    ((struct thread_info *)mfctl(30))
  49.  
  50. #endif /* !__ASSEMBLY */
  51.  
  52. #define PREEMPT_ACTIVE_BIT    28
  53. #define PREEMPT_ACTIVE        (1 << PREEMPT_ACTIVE_BIT)
  54.  
  55. /*
  56.  * thread information flags
  57.  */
  58. #define TIF_SYSCALL_TRACE    0    /* syscall trace active */
  59. #define TIF_NOTIFY_RESUME    1    /* resumption notification requested */
  60. #define TIF_SIGPENDING        2    /* signal pending */
  61. #define TIF_NEED_RESCHED    3    /* rescheduling necessary */
  62. #define TIF_POLLING_NRFLAG    4    /* true if poll_idle() is polling TIF_NEED_RESCHED */
  63. #define TIF_32BIT               5       /* 32 bit binary */
  64. #define TIF_MEMDIE        6
  65.  
  66. #define _TIF_SYSCALL_TRACE    (1 << TIF_SYSCALL_TRACE)
  67. #define _TIF_NOTIFY_RESUME    (1 << TIF_NOTIFY_RESUME)
  68. #define _TIF_SIGPENDING        (1 << TIF_SIGPENDING)
  69. #define _TIF_NEED_RESCHED    (1 << TIF_NEED_RESCHED)
  70. #define _TIF_POLLING_NRFLAG    (1 << TIF_POLLING_NRFLAG)
  71. #define _TIF_32BIT        (1 << TIF_32BIT)
  72.  
  73. #define _TIF_USER_WORK_MASK     (_TIF_NOTIFY_RESUME | _TIF_SIGPENDING | \
  74.                                  _TIF_NEED_RESCHED)
  75.  
  76. #endif /* __KERNEL__ */
  77.  
  78. #endif /* _ASM_PARISC_THREAD_INFO_H */
  79.