X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/61a1daa59589212608039e2734009870818bacd3..refs/heads/eme/taskfs:/lunaix-os/includes/lunaix/fs/taskfs.h?ds=sidebyside diff --git a/lunaix-os/includes/lunaix/fs/taskfs.h b/lunaix-os/includes/lunaix/fs/taskfs.h index 0afc048..f0ef85f 100644 --- a/lunaix-os/includes/lunaix/fs/taskfs.h +++ b/lunaix-os/includes/lunaix/fs/taskfs.h @@ -1,25 +1,46 @@ #ifndef __LUNAIX_TASKFS_H #define __LUNAIX_TASKFS_H -#include +#include #include +#include struct task_attribute { - struct llist_header siblings; + struct list_node siblings; struct hlist_node attrs; struct hstr key; - struct twimap* map_file; - char key_val[32]; + struct twimap_ops ops; }; +#define taskfs_export_attr(name) \ + ({ \ + taskfs_export_attr_mapping(stringify(name), \ + (struct twimap_ops) { \ + __task_read_##name, \ + __twimap_default_gonext, __twimap_default_reset \ + }); \ + }) + +#define taskfs_export_list_attr(name) \ + ({ \ + taskfs_export_attr_mapping(stringify(name), \ + (struct twimap_ops) { \ + __task_read_##name, \ + __task_gonext_##name, __task_reset_##name \ + }); \ + }) + void taskfs_init(); void -taskfs_export_attr(const char* key, struct twimap* attr_map_file); +taskfs_export_attr_mapping(const char* key, struct twimap_ops ops); struct task_attribute* taskfs_get_attr(struct hstr* key); +void +taskfs_invalidate(pid_t pid); + #endif /* __LUNAIX_TASKFS_H */