linux/arch/m68knommu/include/asm/thread_info.h
<<
>>
Prefs
   1/* thread_info.h: m68knommu low-level thread information
   2 * adapted from the i386 and PPC versions by Greg Ungerer (gerg@snapgear.com)
   3 *
   4 * Copyright (C) 2002  David Howells (dhowells@redhat.com)
   5 * - Incorporating suggestions made by Linus Torvalds and Dave Miller
   6 */
   7
   8#ifndef _ASM_THREAD_INFO_H
   9#define _ASM_THREAD_INFO_H
  10
  11#include <asm/page.h>
  12
  13#ifdef __KERNEL__
  14
  15#ifndef __ASSEMBLY__
  16
  17/*
  18 * Size of kernel stack for each process. This must be a power of 2...
  19 */
  20#ifdef CONFIG_4KSTACKS
  21#define THREAD_SIZE_ORDER (0)
  22#else
  23#define THREAD_SIZE_ORDER (1)
  24#endif
  25                                                                                
  26/*
  27 * for asm files, THREAD_SIZE is now generated by asm-offsets.c
  28 */
  29#define THREAD_SIZE (PAGE_SIZE<<THREAD_SIZE_ORDER)
  30
  31/*
  32 * low level task data.
  33 */
  34struct thread_info {
  35        struct task_struct *task;               /* main task structure */
  36        struct exec_domain *exec_domain;        /* execution domain */
  37        unsigned long      flags;               /* low level flags */
  38        int                cpu;                 /* cpu we're on */
  39        int                preempt_count;       /* 0 => preemptable, <0 => BUG */
  40        struct restart_block restart_block;
  41};
  42
  43/*
  44 * macros/functions for gaining access to the thread information structure
  45 */
  46#define INIT_THREAD_INFO(tsk)                   \
  47{                                               \
  48        .task           = &tsk,                 \
  49        .exec_domain    = &default_exec_domain, \
  50        .flags          = 0,                    \
  51        .cpu            = 0,                    \
  52        .restart_block  = {                     \
  53                .fn = do_no_restart_syscall,    \
  54        },                                      \
  55}
  56
  57#define init_thread_info        (init_thread_union.thread_info)
  58#define init_stack              (init_thread_union.stack)
  59
  60
  61/* how to get the thread information struct from C */
  62static inline struct thread_info *current_thread_info(void)
  63{
  64        struct thread_info *ti;
  65        __asm__(
  66                "move.l %%sp, %0 \n\t"
  67                "and.l  %1, %0"
  68                : "=&d"(ti)
  69                : "di" (~(THREAD_SIZE-1))
  70                );
  71        return ti;
  72}
  73
  74#endif /* __ASSEMBLY__ */
  75
  76#define PREEMPT_ACTIVE  0x4000000
  77
  78/*
  79 * thread information flag bit numbers
  80 */
  81#define TIF_SYSCALL_TRACE       0       /* syscall trace active */
  82#define TIF_SIGPENDING          1       /* signal pending */
  83#define TIF_NEED_RESCHED        2       /* rescheduling necessary */
  84#define TIF_POLLING_NRFLAG      3       /* true if poll_idle() is polling
  85                                           TIF_NEED_RESCHED */
  86#define TIF_MEMDIE              4
  87#define TIF_FREEZE              16      /* is freezing for suspend */
  88
  89/* as above, but as bit values */
  90#define _TIF_SYSCALL_TRACE      (1<<TIF_SYSCALL_TRACE)
  91#define _TIF_SIGPENDING         (1<<TIF_SIGPENDING)
  92#define _TIF_NEED_RESCHED       (1<<TIF_NEED_RESCHED)
  93#define _TIF_POLLING_NRFLAG     (1<<TIF_POLLING_NRFLAG)
  94#define _TIF_FREEZE             (1<<TIF_FREEZE)
  95
  96#define _TIF_WORK_MASK          0x0000FFFE      /* work to do on interrupt/exception return */
  97
  98#endif /* __KERNEL__ */
  99
 100#endif /* _ASM_THREAD_INFO_H */
 101
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.