68 member->
group = newGroup;
100 if (group ==
NULL || member ==
NULL)
#define assert(expression)
static group_t * group_new(void)
static void group_free(group_t *group)
group_t * group_get(group_member_t *member)
Retrieve the group of a group member.
uint64_t group_send_note(group_member_t *member, const char *note)
Sends a note to all processes in the group of the specified member.
void group_member_deinit(group_member_t *member)
Deinitializes a group member.
void group_add(group_t *group, group_member_t *member)
Joins a process to a specific group.
uint64_t group_member_init(group_member_t *member, group_member_t *group)
Initializes a group member.
void group_remove(group_member_t *member)
Removes a process from its group.
static thread_t * process_rcu_first_thread(process_t *process)
Gets the first thread of a process.
uint64_t thread_send_note(thread_t *thread, const char *string)
Send a note to a thread.
static void lock_init(lock_t *lock)
Initializes a lock.
#define LOCK_SCOPE(lock)
Acquires a lock for the reminder of the current scope.
static void lock_release(lock_t *lock)
Releases a lock.
static void lock_acquire(lock_t *lock)
Acquires a lock, blocking until it is available.
#define RCU_READ_SCOPE()
RCU read-side critical section for the current scope.
#define REF(ptr)
Increment reference count.
static void ref_init(ref_t *ref, void *callback)
Initialize a reference counter.
#define UNREF(ptr)
Decrement reference count.
#define EINVAL
Invalid argument.
#define ESRCH
No such process.
#define ENOMEM
Out of memory.
#define errno
Error number variable.
#define LIST_FOR_EACH(elem, list, member)
Iterates over a list.
static void list_remove(list_entry_t *entry)
Removes a list entry from its current list.
static void list_push_back(list_t *list, list_entry_t *entry)
Pushes an entry to the end of the list.
static bool list_is_empty(list_t *list)
Checks if a list is empty.
static void list_entry_init(list_entry_t *entry)
Initializes a list entry.
static void list_init(list_t *list)
Initializes a list.
#define NULL
Pointer error value.
#define ERR
Integer error value.
_PUBLIC void * malloc(size_t size)
_PUBLIC void free(void *ptr)
Thread of execution structure.