A Total Overhaul on the Lunaix's Virtual Memory Model (#26)
[lunaix-os.git] / lunaix-os / kernel / process / task_attr.c
index f90ed35941fdb6878f3ab353c017d652c8cb7dd5..7c4c83d1be6544930e15e4a4f2b639aa3a5a166a 100644 (file)
@@ -1,18 +1,5 @@
 #include <lunaix/fs/taskfs.h>
-
-void
-__read_pending_sig(struct twimap* map)
-{
-    struct proc_info* proc = twimap_data(map, struct proc_info*);
-    twimap_printf(map, "%bb", proc->sig_pending);
-}
-
-void
-__read_masked_sig(struct twimap* map)
-{
-    struct proc_info* proc = twimap_data(map, struct proc_info*);
-    twimap_printf(map, "%bb", proc->sig_mask);
-}
+#include <lunaix/process.h>
 
 void
 __read_parent(struct twimap* map)
@@ -38,7 +25,9 @@ __read_pgid(struct twimap* map)
 void
 __read_children(struct twimap* map)
 {
-    struct proc_info* proc = twimap_index(map, struct proc_info*);
+    struct llist_header* proc_list = twimap_index(map, struct llist_header*);
+    struct proc_info* proc =
+      container_of(proc_list, struct proc_info, siblings);
     if (!proc)
         return;
     twimap_printf(map, "%d ", proc->pid);
@@ -47,11 +36,12 @@ __read_children(struct twimap* map)
 int
 __next_children(struct twimap* map)
 {
-    struct proc_info* proc = twimap_index(map, struct proc_info*);
+    struct llist_header* proc = twimap_index(map, struct llist_header*);
+    struct proc_info* current = twimap_data(map, struct proc_info*);
     if (!proc)
         return 0;
-    map->index = container_of(proc->siblings.next, struct proc_info, siblings);
-    if (map->index == proc) {
+    map->index = proc->next;
+    if (map->index == &current->children) {
         return 0;
     }
     return 1;
@@ -65,20 +55,22 @@ __reset_children(struct twimap* map)
         map->index = 0;
         return;
     }
-    map->index = container_of(proc->children.next, struct proc_info, siblings);
+    map->index = proc->children.next;
 }
 
 void
 export_task_attr()
 {
     struct twimap* map;
-    map = twimap_create(NULL);
-    map->read = __read_pending_sig;
-    taskfs_export_attr("sig_pending", map);
+    
+    // FIXME goes to thread specific location
+    // map = twimap_create(NULL);
+    // map->read = __read_pending_sig;
+    // taskfs_export_attr("sig_pending", map);
 
-    map = twimap_create(NULL);
-    map->read = __read_masked_sig;
-    taskfs_export_attr("sig_masked", map);
+    // map = twimap_create(NULL);
+    // map->read = __read_masked_sig;
+    // taskfs_export_attr("sig_masked", map);
 
     map = twimap_create(NULL);
     map->read = __read_parent;