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

  1. /* thread_info.h: CRIS low-level thread information
  2.  *
  3.  * Copyright (C) 2002  David Howells (dhowells@redhat.com)
  4.  * - Incorporating suggestions made by Linus Torvalds and Dave Miller
  5.  * 
  6.  * CRIS port by Axis Communications
  7.  */
  8.  
  9. #ifndef _ASM_THREAD_INFO_H
  10. #define _ASM_THREAD_INFO_H
  11.  
  12. #ifdef __KERNEL__
  13.  
  14. #ifndef __ASSEMBLY__
  15. #include <asm/types.h>
  16. #include <asm/processor.h>
  17. #include <asm/arch/thread_info.h>
  18. #include <asm/segment.h>
  19. #endif
  20.  
  21.  
  22. /*
  23.  * low level task data that entry.S needs immediate access to
  24.  * - this struct should fit entirely inside of one cache line
  25.  * - this struct shares the supervisor stack pages
  26.  * - if the contents of this structure are changed, the assembly constants must also be changed
  27.  */
  28. #ifndef __ASSEMBLY__
  29. struct thread_info {
  30.     struct task_struct    *task;        /* main task structure */
  31.     struct exec_domain    *exec_domain;    /* execution domain */
  32.     unsigned long        flags;        /* low level flags */
  33.     __u32            cpu;        /* current CPU */
  34.     int            preempt_count;    /* 0 => preemptable, <0 => BUG */
  35.  
  36.     mm_segment_t        addr_limit;    /* thread address space:
  37.                             0-0xBFFFFFFF for user-thead
  38.                            0-0xFFFFFFFF for kernel-thread
  39.                         */
  40.     struct restart_block    restart_block;
  41.     __u8            supervisor_stack[0];
  42. };
  43.  
  44. #endif
  45.  
  46. #define PREEMPT_ACTIVE        0x10000000
  47.  
  48. /*
  49.  * macros/functions for gaining access to the thread information structure
  50.  *
  51.  * preempt_count needs to be 1 initially, until the scheduler is functional.
  52.  */
  53. #ifndef __ASSEMBLY__
  54. #define INIT_THREAD_INFO(tsk)                \
  55. {                            \
  56.     .task        = &tsk,                \
  57.     .exec_domain    = &default_exec_domain,        \
  58.     .flags        = 0,                \
  59.     .cpu        = 0,                \
  60.     .preempt_count    = 1,                \
  61.     .addr_limit    = KERNEL_DS,            \
  62.     .restart_block = {                \
  63.                .fn = do_no_restart_syscall,    \
  64.     },                        \
  65. }
  66.  
  67. #define init_thread_info    (init_thread_union.thread_info)
  68.  
  69. /* thread information allocation */
  70. #define alloc_thread_info(tsk) ((struct thread_info *) __get_free_pages(GFP_KERNEL,1))
  71. #define free_thread_info(ti) free_pages((unsigned long) (ti), 1)
  72.  
  73. #endif /* !__ASSEMBLY__ */
  74.  
  75. /*
  76.  * thread information flags
  77.  * - these are process state flags that various assembly files may need to access
  78.  * - pending work-to-be-done flags are in LSW
  79.  * - other flags in MSW
  80.  */
  81. #define TIF_SYSCALL_TRACE    0    /* syscall trace active */
  82. #define TIF_NOTIFY_RESUME    1    /* resumption notification requested */
  83. #define TIF_SIGPENDING        2    /* signal pending */
  84. #define TIF_NEED_RESCHED    3    /* rescheduling necessary */
  85. #define TIF_POLLING_NRFLAG    16    /* true if poll_idle() is polling TIF_NEED_RESCHED */
  86. #define TIF_MEMDIE        17
  87.  
  88. #define _TIF_SYSCALL_TRACE    (1<<TIF_SYSCALL_TRACE)
  89. #define _TIF_NOTIFY_RESUME    (1<<TIF_NOTIFY_RESUME)
  90. #define _TIF_SIGPENDING        (1<<TIF_SIGPENDING)
  91. #define _TIF_NEED_RESCHED    (1<<TIF_NEED_RESCHED)
  92. #define _TIF_POLLING_NRFLAG    (1<<TIF_POLLING_NRFLAG)
  93.  
  94. #define _TIF_WORK_MASK        0x0000FFFE    /* work to do on interrupt/exception return */
  95. #define _TIF_ALLWORK_MASK    0x0000FFFF    /* work to do on any return to u-space */
  96.  
  97. #endif /* __KERNEL__ */
  98.  
  99. #endif /* _ASM_THREAD_INFO_H */
  100.