linux/include/asm-um/processor-generic.h
<<
>>
Prefs
   1/* 
   2 * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com)
   3 * Licensed under the GPL
   4 */
   5
   6#ifndef __UM_PROCESSOR_GENERIC_H
   7#define __UM_PROCESSOR_GENERIC_H
   8
   9struct pt_regs;
  10
  11struct task_struct;
  12
  13#include "asm/ptrace.h"
  14#include "choose-mode.h"
  15#include "registers.h"
  16#include "sysdep/archsetjmp.h"
  17
  18struct mm_struct;
  19
  20struct thread_struct {
  21        /* This flag is set to 1 before calling do_fork (and analyzed in
  22         * copy_thread) to mark that we are begin called from userspace (fork /
  23         * vfork / clone), and reset to 0 after. It is left to 0 when called
  24         * from kernelspace (i.e. kernel_thread() or fork_idle(), as of 2.6.11). */
  25        struct task_struct *saved_task;
  26        int forking;
  27        int nsyscalls;
  28        struct pt_regs regs;
  29        int singlestep_syscall;
  30        void *fault_addr;
  31        void *fault_catcher;
  32        struct task_struct *prev_sched;
  33        unsigned long temp_stack;
  34        void *exec_buf;
  35        struct arch_thread arch;
  36        union {
  37#ifdef CONFIG_MODE_TT
  38                struct {
  39                        int extern_pid;
  40                        int tracing;
  41                        int switch_pipe[2];
  42                        int vm_seq;
  43                } tt;
  44#endif
  45#ifdef CONFIG_MODE_SKAS
  46                struct {
  47                        jmp_buf switch_buf;
  48                        int mm_count;
  49                } skas;
  50#endif
  51        } mode;
  52        struct {
  53                int op;
  54                union {
  55                        struct {
  56                                int pid;
  57                        } fork, exec;
  58                        struct {
  59                                int (*proc)(void *);
  60                                void *arg;
  61                        } thread;
  62                        struct {
  63                                void (*proc)(void *);
  64                                void *arg;
  65                        } cb;
  66                } u;
  67        } request;
  68};
  69
  70#define INIT_THREAD \
  71{ \
  72        .forking                = 0, \
  73        .nsyscalls              = 0, \
  74        .regs                   = EMPTY_REGS, \
  75        .fault_addr             = NULL, \
  76        .prev_sched             = NULL, \
  77        .temp_stack             = 0, \
  78        .exec_buf               = NULL, \
  79        .arch                   = INIT_ARCH_THREAD, \
  80        .request                = { 0 } \
  81}
  82
  83typedef struct {
  84        unsigned long seg;
  85} mm_segment_t;
  86
  87extern struct task_struct *alloc_task_struct(void);
  88
  89extern void release_thread(struct task_struct *);
  90extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
  91
  92static inline void prepare_to_copy(struct task_struct *tsk)
  93{
  94}
  95
  96
  97extern unsigned long thread_saved_pc(struct task_struct *t);
  98
  99static inline void mm_copy_segments(struct mm_struct *from_mm,
 100                                    struct mm_struct *new_mm)
 101{
 102}
 103
 104#define init_stack      (init_thread_union.stack)
 105
 106/*
 107 * User space process size: 3GB (default).
 108 */
 109extern unsigned long task_size;
 110
 111#define TASK_SIZE       (task_size)
 112
 113/* This decides where the kernel will search for a free chunk of vm
 114 * space during mmap's.
 115 */
 116#define TASK_UNMAPPED_BASE      (0x40000000)
 117
 118extern void start_thread(struct pt_regs *regs, unsigned long entry, 
 119                         unsigned long stack);
 120
 121struct cpuinfo_um {
 122        unsigned long loops_per_jiffy;
 123        int ipi_pipe[2];
 124};
 125
 126extern struct cpuinfo_um boot_cpu_data;
 127
 128#define my_cpu_data             cpu_data[smp_processor_id()]
 129
 130#ifdef CONFIG_SMP
 131extern struct cpuinfo_um cpu_data[];
 132#define current_cpu_data cpu_data[smp_processor_id()]
 133#else
 134#define cpu_data (&boot_cpu_data)
 135#define current_cpu_data boot_cpu_data
 136#endif
 137
 138
 139#ifdef CONFIG_MODE_SKAS
 140#define KSTK_REG(tsk, reg) \
 141        get_thread_reg(reg, &tsk->thread.mode.skas.switch_buf)
 142#else
 143#define KSTK_REG(tsk, reg) (0xbadbabe)
 144#endif
 145#define get_wchan(p) (0)
 146
 147#endif
 148
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.