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

  1. /* 
  2.  * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
  3.  * Licensed under the GPL
  4.  */
  5.  
  6. #ifndef __UM_THREAD_INFO_H
  7. #define __UM_THREAD_INFO_H
  8.  
  9. #ifndef __ASSEMBLY__
  10.  
  11. #include <asm/processor.h>
  12. #include <asm/types.h>
  13.  
  14. struct thread_info {
  15.     struct task_struct    *task;        /* main task structure */
  16.     struct exec_domain    *exec_domain;    /* execution domain */
  17.     unsigned long        flags;        /* low level flags */
  18.     __u32            cpu;        /* current CPU */
  19.     int            preempt_count;  /* 0 => preemptable,
  20.                            <0 => BUG */
  21.     mm_segment_t        addr_limit;    /* thread address space:
  22.                             0-0xBFFFFFFF for user
  23.                            0-0xFFFFFFFF for kernel */
  24.     struct restart_block    restart_block;
  25. };
  26.  
  27. #define INIT_THREAD_INFO(tsk)            \
  28. {                        \
  29.     .task =        &tsk,            \
  30.     .exec_domain =    &default_exec_domain,    \
  31.     .flags =        0,        \
  32.     .cpu =        0,            \
  33.     .preempt_count =    1,        \
  34.     .addr_limit =    KERNEL_DS,        \
  35.     .restart_block =  {            \
  36.         .fn =  do_no_restart_syscall,    \
  37.     },                    \
  38. }
  39.  
  40. #define init_thread_info    (init_thread_union.thread_info)
  41. #define init_stack        (init_thread_union.stack)
  42.  
  43. #define THREAD_SIZE ((1 << CONFIG_KERNEL_STACK_ORDER) * PAGE_SIZE)
  44. /* how to get the thread information struct from C */
  45. static inline struct thread_info *current_thread_info(void)
  46. {
  47.     struct thread_info *ti;
  48.     unsigned long mask = THREAD_SIZE - 1;
  49.     ti = (struct thread_info *) (((unsigned long) &ti) & ~mask);
  50.     return ti;
  51. }
  52.  
  53. /* thread information allocation */
  54. #define alloc_thread_info(tsk) \
  55.     ((struct thread_info *) kmalloc(THREAD_SIZE, GFP_KERNEL))
  56. #define free_thread_info(ti) kfree(ti)
  57.  
  58. #endif
  59.  
  60. #define PREEMPT_ACTIVE        0x10000000
  61.  
  62. #define TIF_SYSCALL_TRACE    0    /* syscall trace active */
  63. #define TIF_SIGPENDING        1    /* signal pending */
  64. #define TIF_NEED_RESCHED    2    /* rescheduling necessary */
  65. #define TIF_POLLING_NRFLAG      3       /* true if poll_idle() is polling 
  66.                      * TIF_NEED_RESCHED 
  67.                      */
  68. #define TIF_RESTART_BLOCK     4
  69. #define TIF_MEMDIE         5
  70. #define TIF_SYSCALL_AUDIT    6
  71. #define TIF_RESTORE_SIGMASK    7
  72.  
  73. #define _TIF_SYSCALL_TRACE    (1 << TIF_SYSCALL_TRACE)
  74. #define _TIF_SIGPENDING        (1 << TIF_SIGPENDING)
  75. #define _TIF_NEED_RESCHED    (1 << TIF_NEED_RESCHED)
  76. #define _TIF_POLLING_NRFLAG     (1 << TIF_POLLING_NRFLAG)
  77. #define _TIF_MEMDIE        (1 << TIF_MEMDIE)
  78. #define _TIF_SYSCALL_AUDIT    (1 << TIF_SYSCALL_AUDIT)
  79. #define _TIF_RESTORE_SIGMASK    (1 << TIF_RESTORE_SIGMASK)
  80.  
  81. #endif
  82.