~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to arch/um/include/asm/thread_info.h

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (C) 2002 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.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/types.h>
 
12
#include <asm/page.h>
 
13
#include <asm/uaccess.h>
 
14
 
 
15
struct thread_info {
 
16
        struct task_struct      *task;          /* main task structure */
 
17
        struct exec_domain      *exec_domain;   /* execution domain */
 
18
        unsigned long           flags;          /* low level flags */
 
19
        __u32                   cpu;            /* current CPU */
 
20
        int                     preempt_count;  /* 0 => preemptable,
 
21
                                                   <0 => BUG */
 
22
        mm_segment_t            addr_limit;     /* thread address space:
 
23
                                                   0-0xBFFFFFFF for user
 
24
                                                   0-0xFFFFFFFF for kernel */
 
25
        struct restart_block    restart_block;
 
26
        struct thread_info      *real_thread;    /* Points to non-IRQ stack */
 
27
};
 
28
 
 
29
#define INIT_THREAD_INFO(tsk)                   \
 
30
{                                               \
 
31
        .task =         &tsk,                   \
 
32
        .exec_domain =  &default_exec_domain,   \
 
33
        .flags =                0,              \
 
34
        .cpu =          0,                      \
 
35
        .preempt_count = INIT_PREEMPT_COUNT,    \
 
36
        .addr_limit =   KERNEL_DS,              \
 
37
        .restart_block =  {                     \
 
38
                .fn =  do_no_restart_syscall,   \
 
39
        },                                      \
 
40
        .real_thread = NULL,                    \
 
41
}
 
42
 
 
43
#define init_thread_info        (init_thread_union.thread_info)
 
44
#define init_stack              (init_thread_union.stack)
 
45
 
 
46
#define THREAD_SIZE ((1 << CONFIG_KERNEL_STACK_ORDER) * PAGE_SIZE)
 
47
/* how to get the thread information struct from C */
 
48
static inline struct thread_info *current_thread_info(void)
 
49
{
 
50
        struct thread_info *ti;
 
51
        unsigned long mask = THREAD_SIZE - 1;
 
52
        void *p;
 
53
 
 
54
        asm volatile ("" : "=r" (p) : "0" (&ti));
 
55
        ti = (struct thread_info *) (((unsigned long)p) & ~mask);
 
56
        return ti;
 
57
}
 
58
 
 
59
#define THREAD_SIZE_ORDER CONFIG_KERNEL_STACK_ORDER
 
60
 
 
61
#endif
 
62
 
 
63
#define PREEMPT_ACTIVE          0x10000000
 
64
 
 
65
#define TIF_SYSCALL_TRACE       0       /* syscall trace active */
 
66
#define TIF_SIGPENDING          1       /* signal pending */
 
67
#define TIF_NEED_RESCHED        2       /* rescheduling necessary */
 
68
#define TIF_POLLING_NRFLAG      3       /* true if poll_idle() is polling
 
69
                                         * TIF_NEED_RESCHED */
 
70
#define TIF_RESTART_BLOCK       4
 
71
#define TIF_MEMDIE              5       /* is terminating due to OOM killer */
 
72
#define TIF_SYSCALL_AUDIT       6
 
73
#define TIF_RESTORE_SIGMASK     7
 
74
#define TIF_FREEZE              16      /* is freezing for suspend */
 
75
 
 
76
#define _TIF_SYSCALL_TRACE      (1 << TIF_SYSCALL_TRACE)
 
77
#define _TIF_SIGPENDING         (1 << TIF_SIGPENDING)
 
78
#define _TIF_NEED_RESCHED       (1 << TIF_NEED_RESCHED)
 
79
#define _TIF_POLLING_NRFLAG     (1 << TIF_POLLING_NRFLAG)
 
80
#define _TIF_MEMDIE             (1 << TIF_MEMDIE)
 
81
#define _TIF_SYSCALL_AUDIT      (1 << TIF_SYSCALL_AUDIT)
 
82
#define _TIF_RESTORE_SIGMASK    (1 << TIF_RESTORE_SIGMASK)
 
83
#define _TIF_FREEZE             (1 << TIF_FREEZE)
 
84
 
 
85
#endif