Subversion Repositories HelenOS-historic

Rev

Rev 1062 | Rev 1174 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1062 Rev 1159
Line 29... Line 29...
29
#ifndef __TASK_H__
29
#ifndef __TASK_H__
30
#define __TASK_H__
30
#define __TASK_H__
31
 
31
 
32
#include <typedefs.h>
32
#include <typedefs.h>
33
#include <synch/spinlock.h>
33
#include <synch/spinlock.h>
-
 
34
#include <adt/btree.h>
34
#include <adt/list.h>
35
#include <adt/list.h>
35
#include <ipc/ipc.h>
36
#include <ipc/ipc.h>
36
 
37
 
37
/** Task structure. */
38
/** Task structure. */
38
struct task {
39
struct task {
39
    SPINLOCK_DECLARE(lock);
40
    SPINLOCK_DECLARE(lock);
40
    char *name;
41
    char *name;
41
    link_t th_head;     /**< List of threads contained in this task. */
42
    link_t th_head;     /**< List of threads contained in this task. */
42
    link_t tasks_link;  /**< Link to other tasks within the system. */
-
 
43
    as_t *as;       /**< Address space. */
43
    as_t *as;       /**< Address space. */
44
    task_id_t taskid;           /**< Unique identity of task */
44
    task_id_t taskid;   /**< Unique identity of task */
45
 
45
 
46
    /* IPC stuff */
46
    /* IPC stuff */
47
    answerbox_t answerbox;  /**< Communication endpoint */
47
    answerbox_t answerbox;  /**< Communication endpoint */
48
    phone_t phones[IPC_MAX_PHONES];
48
    phone_t phones[IPC_MAX_PHONES];
49
    atomic_t active_calls;  /**< Active asynchronous messages */
49
    atomic_t active_calls;  /**< Active asynchronous messages */
50
};
50
};
51
 
51
 
52
extern spinlock_t tasks_lock;
52
extern spinlock_t tasks_lock;
53
extern link_t tasks_head;
53
extern btree_t tasks_btree;
54
 
54
 
55
extern void task_init(void);
55
extern void task_init(void);
56
extern task_t *task_create(as_t *as, char *name);
56
extern task_t *task_create(as_t *as, char *name);
57
extern task_t *task_run_program(void *program_addr, char *name);
57
extern task_t *task_run_program(void *program_addr, char *name);
58
 
58