Changeset d73d992 in mainline for uspace/lib/c/include/fibril.h


Ignore:
Timestamp:
2018-06-25T20:10:06Z (6 years ago)
Author:
Jiří Zárevúcky <jiri.zarevucky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
3679f51a
Parents:
0a0dff8
git-author:
Jiří Zárevúcky <jiri.zarevucky@…> (2018-06-25 18:56:55)
git-committer:
Jiří Zárevúcky <jiri.zarevucky@…> (2018-06-25 20:10:06)
Message:

Hide libc-internal details of the fibril implementation.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/include/fibril.h

    r0a0dff8 rd73d992  
    3636#define LIBC_FIBRIL_H_
    3737
    38 #include <context.h>
    3938#include <types/common.h>
    40 #include <adt/list.h>
    41 #include <libarch/tls.h>
    4239
    43 #define FIBRIL_WRITER   1
    44 
    45 struct fibril;
     40typedef struct fibril fibril_t;
    4641
    4742typedef struct {
    48         struct fibril *owned_by;
     43        fibril_t *owned_by;
    4944} fibril_owner_info_t;
    5045
    51 typedef enum {
    52         FIBRIL_PREEMPT,
    53         FIBRIL_TO_MANAGER,
    54         FIBRIL_FROM_MANAGER,
    55         FIBRIL_FROM_DEAD
    56 } fibril_switch_type_t;
    57 
    5846typedef sysarg_t fid_t;
    59 
    60 typedef struct fibril {
    61         link_t link;
    62         link_t all_link;
    63         context_t ctx;
    64         void *stack;
    65         void *arg;
    66         errno_t (*func)(void *);
    67         tcb_t *tcb;
    68 
    69         struct fibril *clean_after_me;
    70         errno_t retval;
    71         int flags;
    72 
    73         fibril_owner_info_t *waits_for;
    74 } fibril_t;
    7547
    7648/** Fibril-local variable specifier */
     
    8153extern fid_t fibril_create_generic(errno_t (*func)(void *), void *arg, size_t);
    8254extern void fibril_destroy(fid_t fid);
    83 extern fibril_t *fibril_setup(void);
    84 extern void fibril_teardown(fibril_t *f, bool locked);
    85 extern int fibril_switch(fibril_switch_type_t stype);
    8655extern void fibril_add_ready(fid_t fid);
    87 extern void fibril_add_manager(fid_t fid);
    88 extern void fibril_remove_manager(void);
    8956extern fid_t fibril_get_id(void);
     57extern void fibril_yield(void);
    9058
    9159static inline fid_t fibril_create(errno_t (*func)(void *), void *arg)
     
    9462}
    9563
    96 static inline int fibril_yield(void)
    97 {
    98         return fibril_switch(FIBRIL_PREEMPT);
    99 }
    100 
    10164#endif
    10265
Note: See TracChangeset for help on using the changeset viewer.