XWOS API
4.0
XWOS C/C++ API参考手册
|
XWOS通用库:XWOS的对象 更多...
#include <xwos/standard.h>
#include <xwos/lib/object.h>
#include <xwos/osal/irq.h>
#include <xwos/osal/skd.h>
宏定义 | |
#define | XWOS_OBJTIK_CHUNK ((xwsq_t)1 << 20U) /* 1M */ |
#define | XWOS_OBJTIK_CHUNK_MSK (XWOS_OBJTIK_CHUNK - 1U) |
函数 | |
static xwsq_t | xwos_objtik_get (void) |
从对象标签分配器获取一个标签 | |
static xwer_t | xwos_object_release_refaop_tst (const void *ov, void *arg) |
static void | xwos_object_release_refaop_op (void *nv, const void *ov, void *arg) |
void | xwos_objtik_init (void) |
初始化对象标签分配器 | |
void | xwos_object_construct (struct xwos_object *obj) |
XWOS对象的构造函数 | |
void | xwos_object_destruct (struct xwos_object *obj) |
XWOS对象的析构函数 | |
xwer_t | xwos_object_activate (struct xwos_object *obj, xwobj_gc_f gcfunc) |
激活一个XWOS对象(将其引用计数初始化位1) | |
void | xwos_object_setgc (struct xwos_object *obj, xwobj_gc_f gcfunc) |
设置XWOS对象的垃圾回收函数 | |
static xwer_t | xwos_object_acquire_refaop_tst (const void *ov, void *arg) |
static void | xwos_object_acquire_refaop_op (void *nv, const void *ov, void *arg) |
xwer_t | xwos_object_acquire (struct xwos_object *obj, xwsq_t tik) |
检查对象的标签并增加引用计数 | |
xwer_t | xwos_object_release (struct xwos_object *obj, xwsq_t tik) |
检查对象的标签并减少引用计数 | |
xwer_t | xwos_object_grab (struct xwos_object *obj) |
增加对象的引用计数 | |
xwer_t | xwos_object_put (struct xwos_object *obj) |
减少对象的引用计数 | |
xwer_t | xwos_object_rawput (struct xwos_object *obj) |
减少对象的引用计数,不触发垃圾回收函数 | |
xwsq_t | xwos_object_get_refcnt (struct xwos_object *obj) |
获取XWOS对象的引用计数 | |
变量 | |
static atomic_xwsq_t | xwos_objtik_dispatcher = ( (1U) * ((xwsq_t)1 << 20U) ) |
对象标签分配器,每次分配 XWOS_OBJTIK_CHUNK 个ID给CPU | |
static atomic_xwsq_t | xwos_objtik [(1U)] = {0} |
每CPU的对象标签分配器 | |
XWOS通用库:XWOS的对象
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
在文件 object.c 中定义.
#define XWOS_OBJTIK_CHUNK_MSK (XWOS_OBJTIK_CHUNK - 1U) |
|
static |
< 去除未使用变量的警告
|
static |
|
static |
|
static |
|
static |
从对象标签分配器获取一个标签
为了避免频繁地访问多CPU共享原子变量 xwos_objtik_dispatcher
,每次获取标签 都是从当前CPU的私有变量 xwos_objtik[cpu]
中分配的,只有当 xwos_objtik[cpu]
的 分配额达到最大额度 XWOS_OBJTIK_CHUNK
时,才会在临界区访问 xwos_objtik_dispatcher
预先分配数量为 XWOS_OBJTIK_CHUNK
的标签。
|
static |
|
static |