Changeset 49da044 in mainline for uspace/srv/bd/hr/fge.h
- Timestamp:
- 2025-05-20T19:24:46Z (8 weeks ago)
- Children:
- da80de9
- Parents:
- c5b60e25
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/bd/hr/fge.h
rc5b60e25 r49da044 38 38 #define _HR_FGE_H 39 39 40 #include <adt/bitmap.h> 41 #include <adt/circ_buf.h> 40 42 #include <errno.h> 41 43 #include <stddef.h> 42 44 43 struct hr_fpool; 45 /* forward declarations */ 44 46 typedef struct hr_fpool hr_fpool_t; 45 struct hr_fgroup;46 47 typedef struct hr_fgroup hr_fgroup_t; 48 typedef struct fge_fibril_data fge_fibril_data_t; 49 typedef struct wu_queue wu_queue_t; 47 50 48 51 typedef errno_t (*hr_wu_t)(void *); 52 53 struct fge_fibril_data { 54 hr_wu_t wu; /* work unit function pointer */ 55 void *arg; /* work unit function argument */ 56 hr_fgroup_t *group; /* back-pointer to group */ 57 ssize_t memslot; /* index to pool bitmap slot */ 58 }; 59 60 struct wu_queue { 61 fibril_mutex_t lock; 62 fibril_condvar_t not_empty; 63 fibril_condvar_t not_full; 64 fge_fibril_data_t *fexecs; /* circ-buf memory */ 65 circ_buf_t cbuf; 66 }; 67 68 struct hr_fpool { 69 fibril_mutex_t lock; 70 bitmap_t bitmap; /* memory slot bitmap */ 71 wu_queue_t queue; 72 fid_t *fibrils; 73 uint8_t *wu_storage; /* pre-allocated pool storage */ 74 size_t fibril_cnt; 75 size_t max_wus; 76 size_t active_groups; 77 bool stop; 78 size_t wu_size; 79 size_t wu_storage_free_count; 80 fibril_condvar_t all_wus_done; 81 }; 82 83 struct hr_fgroup { 84 hr_fpool_t *pool;/* back-pointer to pool */ 85 size_t wu_cnt;/* upper bound of work units */ 86 size_t submitted; /* number of submitted jobs */ 87 size_t reserved_cnt; /* no. of reserved wu storage slots */ 88 size_t reserved_avail; 89 size_t *memslots; /* indices to pool bitmap */ 90 void *own_mem; /* own allocated memory */ 91 size_t own_used; /* own memory slots used counter */ 92 errno_t final_errno; /* agreggated errno */ 93 size_t finished_okay; /* no. of wus that ended with EOK */ 94 size_t finished_fail; /* no. of wus that ended with != EOK */ 95 fibril_mutex_t lock; 96 fibril_condvar_t all_done; 97 }; 49 98 50 99 extern hr_fpool_t *hr_fpool_create(size_t, size_t, size_t);
Note:
See TracChangeset
for help on using the changeset viewer.