Changeset 4c60255 in mainline for kernel/generic/include/proc/task.h
- Timestamp:
- 2007-01-29T17:59:25Z (18 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- c27c988
- Parents:
- 3802fcd
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/proc/task.h
r3802fcd r4c60255 53 53 54 54 #define IPC_MAX_PHONES 16 55 #define THREAD_NAME_BUFLEN 2056 55 57 56 struct answerbox; … … 168 167 } thread_join_type_t; 169 168 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 will206 * 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 249 169 SPINLOCK_EXTERN(tasks_lock); 250 170 extern btree_t tasks_btree;
Note:
See TracChangeset
for help on using the changeset viewer.