]> err.no Git - linux-2.6/blobdiff - include/linux/sched.h
Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
[linux-2.6] / include / linux / sched.h
index 83d657811d016a7e07766cd2e0a8d7d7b0715a5e..29b7d4f87d207a69a1b8a2c0167416f1332f030d 100644 (file)
@@ -684,6 +684,7 @@ static inline void prefetch_stack(struct task_struct *t) { }
 
 struct audit_context;          /* See audit.c */
 struct mempolicy;
+struct pipe_inode_info;
 
 enum sleep_type {
        SLEEP_NORMAL,
@@ -882,6 +883,11 @@ struct task_struct {
 
        atomic_t fs_excl;       /* holding fs exclusive resources */
        struct rcu_head rcu;
+
+       /*
+        * cache last used pipe for splice
+        */
+       struct pipe_inode_info *splice_pipe;
 };
 
 static inline pid_t process_group(struct task_struct *tsk)
@@ -905,7 +911,6 @@ static inline int pid_alive(struct task_struct *p)
 extern void free_task(struct task_struct *tsk);
 #define get_task_struct(tsk) do { atomic_inc(&(tsk)->usage); } while(0)
 
-extern void __put_task_struct_cb(struct rcu_head *rhp);
 extern void __put_task_struct(struct task_struct *t);
 
 static inline void put_task_struct(struct task_struct *t)
@@ -1187,8 +1192,7 @@ extern void wait_task_inactive(task_t * p);
 #define remove_parent(p)       list_del_init(&(p)->sibling)
 #define add_parent(p)          list_add_tail(&(p)->sibling,&(p)->parent->children)
 
-#define next_task(p)   list_entry((p)->tasks.next, struct task_struct, tasks)
-#define prev_task(p)   list_entry((p)->tasks.prev, struct task_struct, tasks)
+#define next_task(p)   list_entry(rcu_dereference((p)->tasks.next), struct task_struct, tasks)
 
 #define for_each_process(p) \
        for (p = &init_task ; (p = next_task(p)) != &init_task ; )