Changeset 597fa24 in mainline for kernel/generic/include/synch


Ignore:
Timestamp:
2025-04-09T16:19:40Z (9 months ago)
Author:
Jiří Zárevúcky <zarevucky.jiri@…>
Branches:
master
Children:
9f945464, a188131
Parents:
3e7948c
git-author:
Jiří Zárevúcky <zarevucky.jiri@…> (2025-04-09 16:08:09)
git-committer:
Jiří Zárevúcky <zarevucky.jiri@…> (2025-04-09 16:19:40)
Message:

Enable static initialization of kernel synchronization primitives

Location:
kernel/generic/include/synch
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/include/synch/condvar.h

    r3e7948c r597fa24  
    4646} condvar_t;
    4747
     48#define CONDVAR_INITIALIZER(name) (condvar_t) { \
     49        .wq = WAITQ_INITIALIZER((name).wq), \
     50}
     51
     52#define CONDVAR_INITIALIZE(name) \
     53        condvar_t name = CONDVAR_INITIALIZER(name)
     54
    4855#ifdef CONFIG_SMP
    4956#define _condvar_wait_timeout_spinlock(cv, lock, usec, flags) \
  • kernel/generic/include/synch/mutex.h

    r3e7948c r597fa24  
    5656} mutex_t;
    5757
     58#define MUTEX_INITIALIZER(name, mtype) (mutex_t) { \
     59        .type = (mtype), \
     60        .sem = SEMAPHORE_INITIALIZER((name).sem, 1), \
     61        .owner = NULL, \
     62        .nesting = 0, \
     63}
     64
     65#define MUTEX_INITIALIZE(name, mtype) \
     66        mutex_t name = MUTEX_INITIALIZER(name, mtype)
     67
    5868extern void mutex_initialize(mutex_t *, mutex_type_t);
    5969extern bool mutex_locked(mutex_t *);
  • kernel/generic/include/synch/semaphore.h

    r3e7948c r597fa24  
    4545} semaphore_t;
    4646
     47#define SEMAPHORE_INITIALIZER(name, count) (semaphore_t) { \
     48        .wq = WAITQ_INITIALIZER_WITH_COUNT((name).wq, count), \
     49}
     50
     51#define SEMAPHORE_INITIALIZE(name, count) \
     52        semaphore_t name = SEMAPHORE_INITIALIZER(name, count)
     53
    4754extern void semaphore_initialize(semaphore_t *, int);
    4855extern errno_t semaphore_down_timeout(semaphore_t *, uint32_t);
  • kernel/generic/include/synch/waitq.h

    r3e7948c r597fa24  
    4040#include <abi/synch.h>
    4141#include <adt/list.h>
     42
     43#define WAITQ_INITIALIZER_WITH_COUNT(name, count) (waitq_t) { \
     44        .lock = IRQ_SPINLOCK_INITIALIZER(#name ".lock"), \
     45        .sleepers = LIST_INITIALIZER((name).sleepers), \
     46        .wakeup_balance = (count), \
     47}
     48
     49#define WAITQ_INITIALIZER(name) WAITQ_INITIALIZER_WITH_COUNT(name, 0)
     50
     51#define WAITQ_INITIALIZE_WITH_COUNT(name, count) \
     52        waitq_t name = WAITQ_INITIALIZER_WITH_COUNT(name, count)
     53
     54#define WAITQ_INITIALIZE(name) \
     55        waitq_t name = WAITQ_INITIALIZER(name)
    4256
    4357/** Wait queue structure.
Note: See TracChangeset for help on using the changeset viewer.