Changeset 49da044 in mainline


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

hr: fge: move types to fge.h

Location:
uspace/srv/bd/hr
Files:
2 edited

Legend:

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

    rc5b60e25 r49da044  
    5353#include "fge.h"
    5454
    55 /* forward declarations */
    56 struct fge_fibril_data;
    57 typedef struct fge_fibril_data fge_fibril_data_t;
    58 struct wu_queue;
    59 typedef struct wu_queue wu_queue_t;
    60 
    6155static void *hr_fpool_make_storage(hr_fpool_t *, ssize_t *);
    6256static void hr_fpool_group_epilogue(hr_fpool_t *);
     
    6660static void wu_queue_pop(wu_queue_t *, fge_fibril_data_t *);
    6761static ssize_t hr_fpool_get_free_slot(hr_fpool_t *);
    68 
    69 struct fge_fibril_data {
    70         hr_wu_t wu; /* work unit function pointer */
    71         void *arg; /* work unit function argument */
    72         hr_fgroup_t *group; /* back-pointer to group */
    73         ssize_t memslot; /* index to pool bitmap slot */
    74 };
    75 
    76 struct wu_queue {
    77         fibril_mutex_t lock;
    78         fibril_condvar_t not_empty;
    79         fibril_condvar_t not_full;
    80         fge_fibril_data_t *fexecs; /* circ-buf memory */
    81         circ_buf_t cbuf;
    82 };
    83 
    84 struct hr_fpool {
    85         fibril_mutex_t lock;
    86         bitmap_t bitmap; /* memory slot bitmap */
    87         wu_queue_t queue;
    88         fid_t *fibrils;
    89         uint8_t *wu_storage; /* pre-allocated pool storage */
    90         size_t fibril_cnt;
    91         size_t max_wus;
    92         size_t active_groups;
    93         bool stop;
    94         size_t wu_size;
    95         size_t wu_storage_free_count;
    96         fibril_condvar_t all_wus_done;
    97 };
    98 
    99 struct hr_fgroup {
    100         hr_fpool_t *pool;/* back-pointer to pool */
    101         size_t wu_cnt;/* upper bound of work units */
    102         size_t submitted; /* number of submitted jobs */
    103         size_t reserved_cnt; /* no. of reserved wu storage slots */
    104         size_t reserved_avail;
    105         size_t *memslots; /* indices to pool bitmap */
    106         void *own_mem; /* own allocated memory */
    107         size_t own_used; /* own memory slots used counter */
    108         errno_t final_errno; /* agreggated errno */
    109         size_t finished_okay; /* no. of wus that ended with EOK */
    110         size_t finished_fail; /* no. of wus that ended with != EOK */
    111         fibril_mutex_t lock;
    112         fibril_condvar_t all_done;
    113 };
    11462
    11563hr_fpool_t *hr_fpool_create(size_t fibril_cnt, size_t max_wus,
  • 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.