mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
5602587dd7
It is often desiderable to sync on multiple threads, e.g. there can be a controller thread that waits for `n` worker threads to finish their job. An inverse semaphore provides an easy primitive to implement this pattern. After being initialized with a value `n` (in counter mode), a call to `sema_inv_wait()` will block until each of the `n` threads has called `sema_inv_post()` exactly once. There are situations where workers might post an event more than once (unless additional state is introduced). For this case, the alternative mask mode is provided. Here the inverse semaphore is initialized with a bit mask, each worker can clear one or multiple bits with `sema_inv_post_mask()`. A worker can clear it's bit multiple times.
192 lines
4.9 KiB
Makefile
192 lines
4.9 KiB
Makefile
# SORT THIS ALPHABETICALLY BY MODULE NAME!
|
|
ifneq (,$(filter asymcute,$(USEMODULE)))
|
|
DIRS += net/application_layer/asymcute
|
|
endif
|
|
ifneq (,$(filter bluetil_%,$(USEMODULE)))
|
|
DIRS += net/ble/bluetil
|
|
endif
|
|
ifneq (,$(filter cipher_modes,$(USEMODULE)))
|
|
DIRS += crypto/modes
|
|
endif
|
|
ifneq (,$(filter constfs,$(USEMODULE)))
|
|
DIRS += fs/constfs
|
|
endif
|
|
ifneq (,$(filter cord_common,$(USEMODULE)))
|
|
DIRS += net/application_layer/cord/common
|
|
endif
|
|
ifneq (,$(filter cord_ep,$(USEMODULE)))
|
|
DIRS += net/application_layer/cord/ep
|
|
endif
|
|
ifneq (,$(filter cord_epsim,$(USEMODULE)))
|
|
DIRS += net/application_layer/cord/epsim
|
|
endif
|
|
ifneq (,$(filter cord_lc,$(USEMODULE)))
|
|
DIRS += net/application_layer/cord/lc
|
|
endif
|
|
ifneq (,$(filter cpp11-compat,$(USEMODULE)))
|
|
DIRS += cpp11-compat
|
|
endif
|
|
ifneq (,$(filter credman,$(USEMODULE)))
|
|
DIRS += net/credman
|
|
endif
|
|
ifneq (,$(filter csma_sender,$(USEMODULE)))
|
|
DIRS += net/link_layer/csma_sender
|
|
endif
|
|
ifneq (,$(filter devfs,$(USEMODULE)))
|
|
DIRS += fs/devfs
|
|
endif
|
|
ifneq (,$(filter dhcpv6,$(USEMODULE)))
|
|
DIRS += net/application_layer/dhcpv6
|
|
endif
|
|
ifneq (,$(filter dummy_thread,$(USEMODULE)))
|
|
DIRS += test_utils/dummy_thread
|
|
endif
|
|
ifneq (,$(filter eepreg,$(USEMODULE)))
|
|
DIRS += eepreg
|
|
endif
|
|
ifneq (,$(filter emcute,$(USEMODULE)))
|
|
DIRS += net/application_layer/emcute
|
|
endif
|
|
ifneq (,$(filter eui_provider,$(USEMODULE)))
|
|
DIRS += net/link_layer/eui_provider
|
|
endif
|
|
ifneq (,$(filter fib,$(USEMODULE)))
|
|
DIRS += net/network_layer/fib
|
|
endif
|
|
ifneq (,$(filter gcoap,$(USEMODULE)))
|
|
DIRS += net/application_layer/gcoap
|
|
endif
|
|
ifneq (,$(filter gnrc gnrc_%,$(USEMODULE)))
|
|
DIRS += net/gnrc
|
|
endif
|
|
ifneq (,$(filter gnrc_uhcpc,$(USEMODULE)))
|
|
DIRS += net/gnrc/application_layer/uhcpc
|
|
endif
|
|
ifneq (,$(filter icmpv6,$(USEMODULE)))
|
|
DIRS += net/network_layer/icmpv6
|
|
endif
|
|
ifneq (,$(filter ieee802154,$(USEMODULE)))
|
|
DIRS += net/link_layer/ieee802154
|
|
endif
|
|
ifneq (,$(filter inet_csum,$(USEMODULE)))
|
|
DIRS += net/crosslayer/inet_csum
|
|
endif
|
|
ifneq (,$(filter ipv4_addr,$(USEMODULE)))
|
|
DIRS += net/network_layer/ipv4/addr
|
|
endif
|
|
ifneq (,$(filter ipv6_addr,$(USEMODULE)))
|
|
DIRS += net/network_layer/ipv6/addr
|
|
endif
|
|
ifneq (,$(filter ipv6_hdr,$(USEMODULE)))
|
|
DIRS += net/network_layer/ipv6/hdr
|
|
endif
|
|
ifneq (,$(filter isrpipe_read_timeout,$(USEMODULE)))
|
|
DIRS += isrpipe/read_timeout
|
|
endif
|
|
ifneq (,$(filter l2filter,$(USEMODULE)))
|
|
DIRS += net/link_layer/l2filter
|
|
endif
|
|
ifneq (,$(filter l2util,$(USEMODULE)))
|
|
DIRS += net/link_layer/l2util
|
|
endif
|
|
ifneq (,$(filter log_%,$(USEMODULE)))
|
|
DIRS += log
|
|
endif
|
|
ifneq (,$(filter nanocoap,$(USEMODULE)))
|
|
DIRS += net/application_layer/nanocoap
|
|
endif
|
|
ifneq (,$(filter net_help,$(USEMODULE)))
|
|
DIRS += net/crosslayer/net_help
|
|
endif
|
|
ifneq (,$(filter netdev_test,$(USEMODULE)))
|
|
DIRS += net/netdev_test
|
|
endif
|
|
ifneq (,$(filter netif,$(USEMODULE)))
|
|
DIRS += net/netif
|
|
endif
|
|
ifneq (,$(filter netopt,$(USEMODULE)))
|
|
DIRS += net/crosslayer/netopt
|
|
endif
|
|
ifneq (,$(filter sema,$(USEMODULE)))
|
|
DIRS += sema
|
|
endif
|
|
ifneq (,$(filter sema_inv,$(USEMODULE)))
|
|
DIRS += sema_inv
|
|
endif
|
|
ifneq (,$(filter sixlowpan,$(USEMODULE)))
|
|
DIRS += net/network_layer/sixlowpan
|
|
endif
|
|
ifneq (,$(filter sntp,$(USEMODULE)))
|
|
DIRS += net/application_layer/sntp
|
|
endif
|
|
ifneq (,$(filter sock_async_event,$(USEMODULE)))
|
|
DIRS += net/sock/async/event
|
|
endif
|
|
ifneq (,$(filter sock_dns,$(USEMODULE)))
|
|
DIRS += net/application_layer/dns
|
|
endif
|
|
ifneq (,$(filter sock_util,$(USEMODULE)))
|
|
DIRS += net/sock
|
|
endif
|
|
ifneq (,$(filter oneway_malloc,$(USEMODULE)))
|
|
DIRS += oneway-malloc
|
|
endif
|
|
ifneq (,$(filter posix_inet,$(USEMODULE)))
|
|
DIRS += posix/inet
|
|
endif
|
|
ifneq (,$(filter posix_select,$(USEMODULE)))
|
|
DIRS += posix/select
|
|
endif
|
|
ifneq (,$(filter posix_semaphore,$(USEMODULE)))
|
|
DIRS += posix/semaphore
|
|
endif
|
|
ifneq (,$(filter posix_sockets,$(USEMODULE)))
|
|
DIRS += posix/sockets
|
|
endif
|
|
ifneq (,$(filter posix_sleep,$(USEMODULE)))
|
|
DIRS += posix/sleep
|
|
endif
|
|
ifneq (,$(filter pthread,$(USEMODULE)))
|
|
DIRS += posix/pthread
|
|
endif
|
|
ifneq (,$(filter routing,$(USEMODULE)))
|
|
DIRS += net/routing
|
|
endif
|
|
ifneq (,$(filter skald,$(USEMODULE)))
|
|
DIRS += net/ble/skald
|
|
endif
|
|
ifneq (,$(filter shell_commands,$(USEMODULE)))
|
|
DIRS += shell/commands
|
|
endif
|
|
ifneq (,$(filter suit%,$(USEMODULE)))
|
|
DIRS += suit
|
|
endif
|
|
ifneq (,$(filter sys_bus,$(USEMODULE)))
|
|
DIRS += bus
|
|
endif
|
|
ifneq (,$(filter tcp,$(USEMODULE)))
|
|
DIRS += net/transport_layer/tcp
|
|
endif
|
|
ifneq (,$(filter test_utils_interactive_sync,$(USEMODULE)))
|
|
DIRS += test_utils/interactive_sync
|
|
endif
|
|
ifneq (,$(filter udp,$(USEMODULE)))
|
|
DIRS += net/transport_layer/udp
|
|
endif
|
|
ifneq (,$(filter uhcpc,$(USEMODULE)))
|
|
DIRS += net/application_layer/uhcp
|
|
endif
|
|
ifneq (,$(filter usbus usbus_%,$(USEMODULE)))
|
|
DIRS += usb/usbus
|
|
endif
|
|
ifneq (,$(filter ztimer_core,$(USEMODULE)))
|
|
DIRS += ztimer
|
|
endif
|
|
ifneq (,$(filter ztimer_xtimer_compat,$(USEMODULE)))
|
|
FILTER += xtimer
|
|
endif
|
|
|
|
DIRS += $(dir $(wildcard $(addsuffix /Makefile, $(filter-out $(FILTER), $(USEMODULE)))))
|
|
|
|
include $(RIOTBASE)/Makefile.base
|