return(ret_val);
}
+
+int process_task_foreach(process_t *proc, int (*func)(process_t*, task_t*, void*), void *data)
+{
+ int ret_val;
+
+ ret_val = -EINVAL;
+
+ if(proc && func) {
+ int i;
+
+ /* FIXME: Lock process */
+
+ for(i = 0; i < CONFIG_PROC_MAXTASKS; i++) {
+ task_t *t = proc->p_tasks[i];
+
+ if(t) {
+ task_lock(t);
+ ret_val = func(proc, t, data);
+ task_unlock(t);
+
+ if(ret_val < 0) {
+ break;
+ }
+ }
+ }
+
+ /* FIXME: Unlock process */
+ }
+
+ return(ret_val);
+}
int process_suspend(process_t*);
int process_setuid(process_t*, uid_t);
int process_setgid(process_t*, gid_t);
+int process_task_foreach(process_t*, int(*)(process_t*, task_t*, void*), void*);
int process_set_pagedir(process_t*, pg_dir_t*);
int process_get_pagedir(process_t*, pg_dir_t**);