diff --git a/kmpp/base/kmpp_frame.c b/kmpp/base/kmpp_frame.c index a929d040..f4e5b335 100644 --- a/kmpp/base/kmpp_frame.c +++ b/kmpp/base/kmpp_frame.c @@ -10,6 +10,6 @@ #define KMPP_OBJ_NAME kmpp_frame #define KMPP_OBJ_INTF_TYPE KmppFrame #define KMPP_OBJ_IMPL_TYPE KmppFrameImpl -#define KMPP_OBJ_SGLN_ID MPP_SGLN_FRAME +#define KMPP_OBJ_SGLN_ID MPP_SGLN_KMPP_FRAME #define KMPP_OBJ_ENTRY_TABLE KMPP_FRAME_ENTRY_TABLE #include "kmpp_obj_helper.h" diff --git a/kmpp/base/kmpp_obj.c b/kmpp/base/kmpp_obj.c index 31ce7a12..943d2784 100644 --- a/kmpp/base/kmpp_obj.c +++ b/kmpp/base/kmpp_obj.c @@ -16,6 +16,7 @@ #include "mpp_debug.h" #include "mpp_common.h" #include "mpp_mem_pool.h" +#include "mpp_singleton.h" #include "mpp_trie.h" #include "mpp_cfg_io.h" @@ -261,8 +262,7 @@ MPP_OBJ_ACCESS_IMPL(fp, void *, % p) MPP_OBJ_STRUCT_ACCESS_IMPL(st, void, % p) MPP_OBJ_STRUCT_ACCESS_IMPL(shm, KmppShmPtr, % p) -__attribute__ ((destructor)) -void kmpp_objs_deinit(void) +static void kmpp_objs_deinit(void) { KmppObjs *p = MPP_FETCH_AND(&objs, NULL); @@ -294,8 +294,7 @@ void kmpp_objs_deinit(void) } } -__attribute__ ((constructor)) -void kmpp_objs_init(void) +static void kmpp_objs_init(void) { static const char *dev = "/dev/kmpp_objs"; KmppObjs *p = objs; @@ -414,6 +413,8 @@ __failed: } } +MPP_SINGLETON(MPP_SGLN_KOBJ, kmpp_obj, kmpp_objs_init, kmpp_objs_deinit); + rk_s32 kmpp_objdef_put(KmppObjDef def) { KmppObjDefImpl *impl = (KmppObjDefImpl *)def; diff --git a/kmpp/base/kmpp_packet.c b/kmpp/base/kmpp_packet.c index 4a1aa7fa..779a2062 100644 --- a/kmpp/base/kmpp_packet.c +++ b/kmpp/base/kmpp_packet.c @@ -8,6 +8,6 @@ #define KMPP_OBJ_NAME kmpp_packet #define KMPP_OBJ_INTF_TYPE KmppPacket #define KMPP_OBJ_IMPL_TYPE KmppPacketImpl -#define KMPP_OBJ_SGLN_ID MPP_SGLN_PACKET +#define KMPP_OBJ_SGLN_ID MPP_SGLN_KMPP_PACKET #define KMPP_OBJ_ENTRY_TABLE KMPP_PACKET_ENTRY_TABLE #include "kmpp_obj_helper.h" \ No newline at end of file diff --git a/osal/inc/mpp_singleton.h b/osal/inc/mpp_singleton.h index 79cd8b5c..e8c36746 100644 --- a/osal/inc/mpp_singleton.h +++ b/osal/inc/mpp_singleton.h @@ -22,13 +22,18 @@ typedef enum MppSingletonId_e { MPP_SGLN_SERVER, /* software platform */ MPP_SGLN_RUNTIME, - /* base module */ + /* kernel module (MUST before userspace module) */ + MPP_SGLN_KOBJ, + MPP_SGLN_KMPP_BUFFER, + MPP_SGLN_KMPP_META, + MPP_SGLN_KMPP_FRAME, + MPP_SGLN_KMPP_PACKET, + /* userspace base module */ MPP_SGLN_BUFFER, MPP_SGLN_META, MPP_SGLN_FRAME, MPP_SGLN_PACKET, - /* system module */ - MPP_SGLN_KOBJ, + /* userspace system module */ MPP_SGLN_ENC_CFG, MPP_SGLN_DEC_CFG, MPP_SGLN_DEC_RC_API,