X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/871af48a7d8d1a8cca7b27e0e15d1dfa030bd172..refs/heads/eme/taskfs:/lunaix-os/includes/lunaix/fs/taskfs.h diff --git a/lunaix-os/includes/lunaix/fs/taskfs.h b/lunaix-os/includes/lunaix/fs/taskfs.h index b96e0e5..f0ef85f 100644 --- a/lunaix-os/includes/lunaix/fs/taskfs.h +++ b/lunaix-os/includes/lunaix/fs/taskfs.h @@ -3,21 +3,39 @@ #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);