Files
mr-library/module/eloop_sp/eloop_sp.h
2023-09-19 23:37:08 +08:00

51 lines
1.6 KiB
C

/*
* Copyright (c) 2023, mr-library Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2023-09-18 MacRsh first version
*/
#ifndef _ELOOP_SP_H_
#define _ELOOP_SP_H_
#include "mrapi.h"
#if (MR_CFG_ELOOP_SP == MR_CFG_ENABLE)
/**
* @struct simple event loop
*/
struct mr_eloop_sp
{
struct mr_object object; /* Eloop object */
struct mr_rb queue; /* Event queue */
void *list; /* Event list */
mr_size_t list_size; /* Event list size */
};
typedef struct mr_eloop_sp *mr_eloop_sp_t; /* Type for event loop */
/**
* @addtogroup Simple eloop
* @{
*/
mr_eloop_sp_t mr_eloop_sp_find(const char *name);
mr_err_t mr_eloop_sp_add(mr_eloop_sp_t eloop, const char *name, mr_size_t queue_size, mr_size_t event_size);
mr_err_t mr_eloop_sp_remove(mr_eloop_sp_t eloop);
void mr_eloop_sp_handle(mr_eloop_sp_t eloop);
mr_err_t mr_eloop_sp_create_event(mr_eloop_sp_t eloop,
mr_uint8_t id,
mr_err_t (*cb)(mr_eloop_sp_t ep, void *args),
void *args);
mr_err_t mr_eloop_sp_delete_event(mr_eloop_sp_t eloop, mr_uint8_t id);
mr_err_t mr_eloop_sp_notify_event(mr_eloop_sp_t eloop, mr_uint8_t id);
mr_err_t mr_eloop_sp_trigger_event(mr_eloop_sp_t eloop, mr_uint8_t id);
/** @} */
#endif
#endif /* _ELOOP_SP_H_ */