bond/include/kernel/rf/ref.h

39 lines
818 B
C

#ifndef _K_REF_H_
#define _K_REF_H_
#include "type.h"
#include "kernel/ke/status.h"
typedef uint32_t handle_t;
typedef struct
{
int32_t ref_count;
callback_func_t free_routine;
} ref_node_t;
#define K_HANDLE_BASE 0x80000000
//
// All functions are sx since users or kernel devs should not be
// specifying where the allocations take place
//
status_t KABI rf_reference_setup(void);
status_t KABI rf_reference_create(ref_node_t *ref,
callback_func_t free_func);
status_t KABI rf_reference_obj(ref_node_t *ref);
status_t KABI rf_dereference_obj(ref_node_t *ref);
// HANDLES
status_t KABI sx_open_obj_by_handle(handle_t handle, ref_node_t **out);
status_t KABI sx_create_handle(ref_node_t *ref, handle_t *out);
status_t KABI sx_close_handle(handle_t handle);
#endif