server: Fix typo in comment for init_user_list().
[paraslash.git] / sched.h
diff --git a/sched.h b/sched.h
index fd714b6..ada1cc1 100644 (file)
--- a/sched.h
+++ b/sched.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006 Andre Noll <maan@tuebingen.mpg.de>
  *
  * Licensed under the GPL v2. For licencing details see COPYING.
  */
@@ -33,33 +33,7 @@ struct sched {
        struct list_head task_list;
 };
 
-/**
- * Paraslash's task structure.
- *
- * This is considered an internal structure and will eventually be made private.
- *
- * \sa \ref sched.
- */
-struct task {
-       /** Copied from the task_info struct during task_register(). */
-       void (*pre_select)(struct sched *s, struct task *t);
-       /** Copied from the task_info struct during task_register(). */
-       int (*post_select)(struct sched *s, struct task *t);
-       /** Whether this task is active (>=0) or in error state (<0). */
-       int error;
-       /** Position of the task in the task list of the scheduler. */
-       struct list_head node;
-       /** The task name supplied when the task was registered(). */
-       char status[255];
-       /** If less than zero, the task was notified by another task. */
-       int notification;
-       /** Whether the task structure should be freed in sched_shutdown(). */
-       bool owned_by_sched;
-       /** True if task is in error state and exit status has been queried. */
-       bool dead;
-       /** Usually a pointer to the struct containing this task. */
-       void *context;
-};
+struct task;
 
 /** Information that must be supplied by callers of \ref task_register(). */
 struct task_info {
@@ -71,7 +45,7 @@ struct task_info {
         * Its purpose is to add file descriptors to the fd sets of the
         * scheduler and to decrease the select timeout if necessary.
         */
-       void (*pre_select)(struct sched *s, struct task *t);
+       void (*pre_select)(struct sched *s, void *context);
        /**
         * The mandatory post select method.
         *
@@ -79,12 +53,11 @@ struct task_info {
         * select call. If this function returns a negative value, the
         * scheduler unregisters the task.
         */
-       int (*post_select)(struct sched *s, struct task *t);
+       int (*post_select)(struct sched *s, void *context);
        /**
-        * This pointer is saved when the task is register(ed). It may be
-        * queried from ->pre_select() and ->post_select() via \ref
-        * task_context(). Usually this is a pointer to the struct owned by the
-        * caller which contains the task pointer as one member.
+        * This pointer is saved when the task is registered. It is passed to
+        * ->pre_select() and ->post_select(). Usually this is a pointer to the
+        * struct owned by the caller which contains the task pointer.
         */
        void *context;
 };
@@ -95,17 +68,16 @@ struct task_info {
  * scheduler are allowed to block, this value should be accurate enough so that
  * there is no need to call clock_gettime() directly.
  */
-extern struct timeval *now;
+extern const struct timeval *now;
 
 struct task *task_register(struct task_info *info, struct sched *s);
-void *task_context(struct task *t);
-void register_task(struct sched *s, struct task *t);
 int schedule(struct sched *s);
 void sched_shutdown(struct sched *s);
 char *get_task_list(struct sched *s);
 void task_notify(struct task *t, int err);
 void task_notify_all(struct sched *s, int err);
 int task_get_notification(const struct task *t);
+int task_status(const struct task *t);
 int task_reap(struct task **tptr);
 void sched_min_delay(struct sched *s);
 void sched_request_timeout(struct timeval *to, struct sched *s);