Changeset 49da044 in mainline for uspace/srv/bd/hr/fge.h


Ignore:
Timestamp:
2025-05-20T19:24:46Z (8 weeks ago)
Author:
Miroslav Cimerman <mc@…>
Children:
da80de9
Parents:
c5b60e25
Message:

hr: fge: move types to fge.h

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/bd/hr/fge.h

    rc5b60e25 r49da044  
    3838#define _HR_FGE_H
    3939
     40#include <adt/bitmap.h>
     41#include <adt/circ_buf.h>
    4042#include <errno.h>
    4143#include <stddef.h>
    4244
    43 struct hr_fpool;
     45/* forward declarations */
    4446typedef struct hr_fpool hr_fpool_t;
    45 struct hr_fgroup;
    4647typedef struct hr_fgroup hr_fgroup_t;
     48typedef struct fge_fibril_data fge_fibril_data_t;
     49typedef struct wu_queue wu_queue_t;
    4750
    4851typedef errno_t (*hr_wu_t)(void *);
     52
     53struct 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
     60struct 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
     68struct 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
     83struct 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};
    4998
    5099extern hr_fpool_t *hr_fpool_create(size_t, size_t, size_t);
Note: See TracChangeset for help on using the changeset viewer.