15#ifndef ZEPHYR_INCLUDE_NET_SOCKET_SERVICE_H_
16#define ZEPHYR_INCLUDE_NET_SOCKET_SERVICE_H_
63#if CONFIG_NET_SOCKETS_LOG_LEVEL >= LOG_LEVEL_DBG
82#define __z_net_socket_svc_get_name(_svc_id) __z_net_socket_service_##_svc_id
83#define __z_net_socket_svc_get_idx(_svc_id) __z_net_socket_service_idx_##_svc_id
84#define __z_net_socket_svc_get_owner __FILE__ ":" STRINGIFY(__LINE__)
86extern void net_socket_service_callback(
struct k_work *
work);
88#if CONFIG_NET_SOCKETS_LOG_LEVEL >= LOG_LEVEL_DBG
89#define NET_SOCKET_SERVICE_OWNER .owner = __z_net_socket_svc_get_owner,
91#define NET_SOCKET_SERVICE_OWNER
94#define __z_net_socket_service_define(_name, _work_q, _cb, _count, ...) \
95 static int __z_net_socket_svc_get_idx(_name); \
96 static struct net_socket_service_event \
97 __z_net_socket_svc_get_name(_name)[_count] = { \
98 [0 ... ((_count) - 1)] = { \
103 COND_CODE_0(NUM_VA_ARGS_LESS_1(__VA_ARGS__), (), __VA_ARGS__) \
104 const STRUCT_SECTION_ITERABLE(net_socket_service_desc, _name) = { \
105 NET_SOCKET_SERVICE_OWNER \
106 .work_q = (_work_q), \
107 .pev = __z_net_socket_svc_get_name(_name), \
108 .pev_len = (_count), \
109 .idx = &__z_net_socket_svc_get_idx(_name), \
134#define NET_SOCKET_SERVICE_SYNC_DEFINE(name, work_q, cb, count) \
135 __z_net_socket_service_define(name, work_q, cb, count)
149#define NET_SOCKET_SERVICE_SYNC_DEFINE_STATIC(name, work_q, cb, count) \
150 __z_net_socket_service_define(name, work_q, cb, count, static)
203#include <zephyr/syscalls/socket_service.h>
void(* net_socket_service_cb_t)(const struct net_socket_service_desc *svc, void *user_data)
Callback used while iterating over socket services.
Definition socket_service.h:188
int net_socket_service_register(const struct net_socket_service_desc *service, struct zsock_pollfd *fds, int len, void *user_data)
Register pollable sockets.
void net_socket_service_foreach(net_socket_service_cb_t cb, void *user_data)
Go through all the socket services and call callback for each service.
static int net_socket_service_unregister(const struct net_socket_service_desc *service)
Unregister pollable sockets.
Definition socket_service.h:176
void(* k_work_handler_t)(struct k_work *work)
The signature for a work item handler function.
Definition kernel.h:3356
BSD Sockets compatible API definitions.
A structure used to hold work until it can be processed.
Definition kernel.h:4109
A structure used to submit work.
Definition kernel.h:3957
Main structure holding socket service configuration information.
Definition socket_service.h:62
const char * owner
Owner name.
Definition socket_service.h:68
int * idx
Where are my pollfd entries in the global list.
Definition socket_service.h:77
int pev_len
Length of the pollable socket array for this service.
Definition socket_service.h:75
struct net_socket_service_event * pev
Pointer to the list of services that we are listening.
Definition socket_service.h:73
struct k_work_q * work_q
Workqueue where the work is submitted.
Definition socket_service.h:71
This struct contains information which socket triggered calls to the callback function.
Definition socket_service.h:39
struct k_work work
k_work that is done when there is desired activity in file descriptor.
Definition socket_service.h:41
k_work_handler_t callback
Callback to be called for desired socket activity.
Definition socket_service.h:43
struct net_socket_service_desc * svc
Service back pointer.
Definition socket_service.h:49
struct zsock_pollfd event
Socket information that triggered this event.
Definition socket_service.h:45
void * user_data
User data.
Definition socket_service.h:47
Definition of the monitored socket/file descriptor.
Definition socket_poll.h:28