Changeset 4c60255 in mainline for kernel/generic/include/proc/task.h


Ignore:
Timestamp:
2007-01-29T17:59:25Z (18 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
c27c988
Parents:
3802fcd
Message:

move thread_t to thread.h

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/include/proc/task.h

    r3802fcd r4c60255  
    5353
    5454#define IPC_MAX_PHONES  16
    55 #define THREAD_NAME_BUFLEN      20
    5655
    5756struct answerbox;
     
    168167} thread_join_type_t;
    169168
    170 /** Thread structure. There is one per thread. */
    171 typedef struct thread {
    172         link_t rq_link;                         /**< Run queue link. */
    173         link_t wq_link;                         /**< Wait queue link. */
    174         link_t th_link;                         /**< Links to threads within containing task. */
    175        
    176         /** Lock protecting thread structure.
    177          *
    178          * Protects the whole thread structure except list links above.
    179          */
    180         SPINLOCK_DECLARE(lock);
    181 
    182         char name[THREAD_NAME_BUFLEN];
    183 
    184         void (* thread_code)(void *);           /**< Function implementing the thread. */
    185         void *thread_arg;                       /**< Argument passed to thread_code() function. */
    186 
    187         /** From here, the stored context is restored when the thread is scheduled. */
    188         context_t saved_context;
    189         /** From here, the stored timeout context is restored when sleep times out. */
    190         context_t sleep_timeout_context;
    191         /** From here, the stored interruption context is restored when sleep is interrupted. */
    192         context_t sleep_interruption_context;
    193 
    194         bool sleep_interruptible;               /**< If true, the thread can be interrupted from sleep. */
    195         waitq_t *sleep_queue;                   /**< Wait queue in which this thread sleeps. */
    196         timeout_t sleep_timeout;                /**< Timeout used for timeoutable sleeping.  */
    197         volatile int timeout_pending;           /**< Flag signalling sleep timeout in progress. */
    198 
    199         /** True if this thread is executing copy_from_uspace(). False otherwise. */
    200         bool in_copy_from_uspace;
    201         /** True if this thread is executing copy_to_uspace(). False otherwise. */
    202         bool in_copy_to_uspace;
    203        
    204         /**
    205          * If true, the thread will not go to sleep at all and will
    206          * call thread_exit() before returning to userspace.
    207          */
    208         bool interrupted;                       
    209        
    210         thread_join_type_t      join_type;      /**< Who joinins the thread. */
    211         bool detached;                          /**< If true, thread_join_timeout() cannot be used on this thread. */
    212         waitq_t join_wq;                        /**< Waitq for thread_join_timeout(). */
    213 
    214         fpu_context_t *saved_fpu_context;
    215         int fpu_context_exists;
    216 
    217         /*
    218          * Defined only if thread doesn't run.
    219          * It means that fpu context is in CPU that last time executes this thread.
    220          * This disables migration.
    221          */
    222         int fpu_context_engaged;
    223 
    224         rwlock_type_t rwlock_holder_type;
    225 
    226         void (* call_me)(void *);               /**< Funtion to be called in scheduler before the thread is put asleep. */
    227         void *call_me_with;                     /**< Argument passed to call_me(). */
    228 
    229         state_t state;                          /**< Thread's state. */
    230         int flags;                              /**< Thread's flags. */
    231        
    232         cpu_t *cpu;                             /**< Thread's CPU. */
    233         task_t *task;                           /**< Containing task. */
    234 
    235         uint64_t ticks;                         /**< Ticks before preemption. */
    236        
    237         uint64_t cycles;                        /**< Thread accounting. */
    238         uint64_t last_cycle;            /**< Last sampled cycle. */
    239         bool uncounted;                         /**< Thread doesn't affect accumulated accounting. */
    240 
    241         int priority;                           /**< Thread's priority. Implemented as index to CPU->rq */
    242         uint32_t tid;                           /**< Thread ID. */
    243        
    244         thread_arch_t arch;                     /**< Architecture-specific data. */
    245 
    246         uint8_t *kstack;                        /**< Thread's kernel stack. */
    247 } thread_t;
    248 
    249169SPINLOCK_EXTERN(tasks_lock);
    250170extern btree_t tasks_btree;
Note: See TracChangeset for help on using the changeset viewer.