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

  1. /*
  2.  *  include/asm-s390/thread_info.h
  3.  *
  4.  *  S390 version
  5.  *    Copyright (C) IBM Corp. 2002,2006
  6.  *    Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
  7.  */
  8.  
  9. #ifndef _ASM_THREAD_INFO_H
  10. #define _ASM_THREAD_INFO_H
  11.  
  12. #ifdef __KERNEL__
  13.  
  14. /*
  15.  * Size of kernel stack for each process
  16.  */
  17. #ifndef __s390x__
  18. #ifndef __SMALL_STACK
  19. #define THREAD_ORDER 1
  20. #define ASYNC_ORDER  1
  21. #else
  22. #define THREAD_ORDER 0
  23. #define ASYNC_ORDER  0
  24. #endif
  25. #else /* __s390x__ */
  26. #ifndef __SMALL_STACK
  27. #define THREAD_ORDER 2
  28. #define ASYNC_ORDER  2
  29. #else
  30. #define THREAD_ORDER 1
  31. #define ASYNC_ORDER  1
  32. #endif
  33. #endif /* __s390x__ */
  34.  
  35. #define THREAD_SIZE (PAGE_SIZE << THREAD_ORDER)
  36. #define ASYNC_SIZE  (PAGE_SIZE << ASYNC_ORDER)
  37.  
  38. #ifndef __ASSEMBLY__
  39. #include <asm/processor.h>
  40. #include <asm/lowcore.h>
  41.  
  42. /*
  43.  * low level task data that entry.S needs immediate access to
  44.  * - this struct should fit entirely inside of one cache line
  45.  * - this struct shares the supervisor stack pages
  46.  * - if the contents of this structure are changed, the assembly constants must also be changed
  47.  */
  48. struct thread_info {
  49.     struct task_struct    *task;        /* main task structure */
  50.     struct exec_domain    *exec_domain;    /* execution domain */
  51.     unsigned long        flags;        /* low level flags */
  52.     unsigned int        cpu;        /* current CPU */
  53.     int            preempt_count;    /* 0 => preemptable, <0 => BUG */
  54.     struct restart_block    restart_block;
  55. };
  56.  
  57. /*
  58.  * macros/functions for gaining access to the thread information structure
  59.  */
  60. #define INIT_THREAD_INFO(tsk)            \
  61. {                        \
  62.     .task        = &tsk,            \
  63.     .exec_domain    = &default_exec_domain,    \
  64.     .flags        = 0,            \
  65.     .cpu        = 0,            \
  66.     .restart_block    = {            \
  67.         .fn = do_no_restart_syscall,    \
  68.     },                    \
  69. }
  70.  
  71. #define init_thread_info    (init_thread_union.thread_info)
  72. #define init_stack        (init_thread_union.stack)
  73.  
  74. /* how to get the thread information struct from C */
  75. static inline struct thread_info *current_thread_info(void)
  76. {
  77.     return (struct thread_info *)((*(unsigned long *) __LC_KERNEL_STACK)-THREAD_SIZE);
  78. }
  79.  
  80. /* thread information allocation */
  81. #define alloc_thread_info(tsk) ((struct thread_info *) \
  82.     __get_free_pages(GFP_KERNEL,THREAD_ORDER))
  83. #define free_thread_info(ti) free_pages((unsigned long) (ti),THREAD_ORDER)
  84.  
  85. #endif
  86.  
  87. /*
  88.  * thread information flags bit numbers
  89.  */
  90. #define TIF_SYSCALL_TRACE    0    /* syscall trace active */
  91. #define TIF_RESTORE_SIGMASK    1    /* restore signal mask in do_signal() */
  92. #define TIF_SIGPENDING        2    /* signal pending */
  93. #define TIF_NEED_RESCHED    3    /* rescheduling necessary */
  94. #define TIF_RESTART_SVC        4    /* restart svc with new svc number */
  95. #define TIF_SYSCALL_AUDIT    5    /* syscall auditing active */
  96. #define TIF_SINGLE_STEP        6    /* deliver sigtrap on return to user */
  97. #define TIF_MCCK_PENDING    7    /* machine check handling is pending */
  98. #define TIF_USEDFPU        16    /* FPU was used by this task this quantum (SMP) */
  99. #define TIF_POLLING_NRFLAG    17    /* true if poll_idle() is polling 
  100.                        TIF_NEED_RESCHED */
  101. #define TIF_31BIT        18    /* 32bit process */ 
  102. #define TIF_MEMDIE        19
  103.  
  104. #define _TIF_SYSCALL_TRACE    (1<<TIF_SYSCALL_TRACE)
  105. #define _TIF_RESTORE_SIGMASK    (1<<TIF_RESTORE_SIGMASK)
  106. #define _TIF_SIGPENDING        (1<<TIF_SIGPENDING)
  107. #define _TIF_NEED_RESCHED    (1<<TIF_NEED_RESCHED)
  108. #define _TIF_RESTART_SVC    (1<<TIF_RESTART_SVC)
  109. #define _TIF_SYSCALL_AUDIT    (1<<TIF_SYSCALL_AUDIT)
  110. #define _TIF_SINGLE_STEP    (1<<TIF_SINGLE_STEP)
  111. #define _TIF_MCCK_PENDING    (1<<TIF_MCCK_PENDING)
  112. #define _TIF_USEDFPU        (1<<TIF_USEDFPU)
  113. #define _TIF_POLLING_NRFLAG    (1<<TIF_POLLING_NRFLAG)
  114. #define _TIF_31BIT        (1<<TIF_31BIT)
  115.  
  116. #endif /* __KERNEL__ */
  117.  
  118. #define PREEMPT_ACTIVE        0x4000000
  119.  
  120. #endif /* _ASM_THREAD_INFO_H */
  121.