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-sh / thread_info.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  2.9 KB  |  101 lines

  1. #ifndef __ASM_SH_THREAD_INFO_H
  2. #define __ASM_SH_THREAD_INFO_H
  3.  
  4. /* SuperH version
  5.  * Copyright (C) 2002  Niibe Yutaka
  6.  *
  7.  * The copyright of original i386 version is:
  8.  *
  9.  *  Copyright (C) 2002  David Howells (dhowells@redhat.com)
  10.  *  - Incorporating suggestions made by Linus Torvalds and Dave Miller
  11.  */
  12.  
  13. #ifdef __KERNEL__
  14.  
  15. #ifndef __ASSEMBLY__
  16. #include <asm/processor.h>
  17.  
  18. struct thread_info {
  19.     struct task_struct    *task;        /* main task structure */
  20.     struct exec_domain    *exec_domain;    /* execution domain */
  21.     unsigned long        flags;        /* low level flags */
  22.     __u32            cpu;
  23.     int            preempt_count; /* 0 => preemptable, <0 => BUG */
  24.     struct restart_block    restart_block;
  25.     __u8            supervisor_stack[0];
  26. };
  27.  
  28. #endif
  29.  
  30. #define PREEMPT_ACTIVE        0x10000000
  31.  
  32. /*
  33.  * macros/functions for gaining access to the thread information structure
  34.  */
  35. #ifndef __ASSEMBLY__
  36. #define INIT_THREAD_INFO(tsk)            \
  37. {                        \
  38.     .task        = &tsk,            \
  39.     .exec_domain    = &default_exec_domain,    \
  40.     .flags        = 0,            \
  41.     .cpu        = 0,            \
  42.     .preempt_count    = 1,            \
  43.     .restart_block    = {            \
  44.         .fn = do_no_restart_syscall,    \
  45.     },                    \
  46. }
  47.  
  48. #define init_thread_info    (init_thread_union.thread_info)
  49. #define init_stack        (init_thread_union.stack)
  50.  
  51. /* how to get the thread information struct from C */
  52. static inline struct thread_info *current_thread_info(void)
  53. {
  54.     struct thread_info *ti;
  55.     __asm__("stc    r7_bank, %0" : "=r" (ti));
  56.     return ti;
  57. }
  58.  
  59. /* thread information allocation */
  60. #define THREAD_SIZE (2*PAGE_SIZE)
  61. #define alloc_thread_info(ti) ((struct thread_info *) __get_free_pages(GFP_KERNEL,1))
  62. #define free_thread_info(ti) free_pages((unsigned long) (ti), 1)
  63.  
  64. #else /* !__ASSEMBLY__ */
  65.  
  66. /* how to get the thread information struct from ASM */
  67. #define GET_THREAD_INFO(reg) \
  68.     stc    r7_bank, reg
  69.  
  70. #endif
  71.  
  72. /*
  73.  * thread information flags
  74.  * - these are process state flags that various assembly files may need to access
  75.  * - pending work-to-be-done flags are in LSW
  76.  * - other flags in MSW
  77.  */
  78. #define TIF_SYSCALL_TRACE    0    /* syscall trace active */
  79. #define TIF_NOTIFY_RESUME    1    /* resumption notification requested */
  80. #define TIF_SIGPENDING        2    /* signal pending */
  81. #define TIF_NEED_RESCHED    3    /* rescheduling necessary */
  82. #define TIF_USEDFPU        16    /* FPU was used by this task this quantum (SMP) */
  83. #define TIF_POLLING_NRFLAG    17    /* true if poll_idle() is polling TIF_NEED_RESCHED */
  84. #define TIF_MEMDIE        18
  85. #define TIF_USERSPACE        31    /* true if FS sets userspace */
  86.  
  87. #define _TIF_SYSCALL_TRACE    (1<<TIF_SYSCALL_TRACE)
  88. #define _TIF_NOTIFY_RESUME    (1<<TIF_NOTIFY_RESUME)
  89. #define _TIF_SIGPENDING        (1<<TIF_SIGPENDING)
  90. #define _TIF_NEED_RESCHED    (1<<TIF_NEED_RESCHED)
  91. #define _TIF_USEDFPU        (1<<TIF_USEDFPU)
  92. #define _TIF_POLLING_NRFLAG    (1<<TIF_POLLING_NRFLAG)
  93. #define _TIF_USERSPACE        (1<<TIF_USERSPACE)
  94.  
  95. #define _TIF_WORK_MASK        0x000000FE    /* work to do on interrupt/exception return */
  96. #define _TIF_ALLWORK_MASK    0x000000FF    /* work to do on any return to u-space */
  97.  
  98. #endif /* __KERNEL__ */
  99.  
  100. #endif /* __ASM_SH_THREAD_INFO_H */
  101.