diff options
Diffstat (limited to 'usr/src/uts/common/io/cxgbe/t4nex/cudbg.c')
| -rw-r--r-- | usr/src/uts/common/io/cxgbe/t4nex/cudbg.c | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/usr/src/uts/common/io/cxgbe/t4nex/cudbg.c b/usr/src/uts/common/io/cxgbe/t4nex/cudbg.c new file mode 100644 index 0000000000..2ad526b7d5 --- /dev/null +++ b/usr/src/uts/common/io/cxgbe/t4nex/cudbg.c @@ -0,0 +1,80 @@ +#include "cudbg.h" + +void +init_cudbg_hdr(struct cudbg_init_hdr *hdr) +{ + hdr->major_ver = CUDBG_MAJOR_VERSION; + hdr->minor_ver = CUDBG_MINOR_VERSION; + hdr->build_ver = CUDBG_BUILD_VERSION; + hdr->init_struct_size = sizeof(struct cudbg_init); +} + +/** + * cudbg_alloc_handle - Allocates and initializes a handle that represents + * cudbg state. Needs to called first before calling any other function. + * + * returns a pointer to memory that has a cudbg_init structure at the begining + * and enough space after that for internal book keeping. + */ + +void * +cudbg_alloc_handle(void) +{ + struct cudbg_private *handle; + +#ifdef _KERNEL + handle = kmem_zalloc(sizeof(*handle), KM_NOSLEEP); +#else + handle = malloc(sizeof(*handle)); +#endif + + if (handle == NULL) + return NULL; + + init_cudbg_hdr(&handle->dbg_init.header); + + return (handle); +} + +/** + * cudbg_free_handle - Release cudbg resources. + * ## Parameters ## + * @handle : A pointer returned by cudbg_alloc_handle. + */ +void +cudbg_free_handle(void *handle) +{ +#ifdef _KERNEL + kmem_free(handle, sizeof(struct cudbg_private)); +#else + free(handle); +#endif +} + +/********************************* Helper functions *************************/ +void +set_dbg_bitmap(u8 *bitmap, enum CUDBG_DBG_ENTITY_TYPE type) +{ + int index = type / 8; + int bit = type % 8; + + bitmap[index] |= (1 << bit); +} + +void +reset_dbg_bitmap(u8 *bitmap, enum CUDBG_DBG_ENTITY_TYPE type) +{ + int index = type / 8; + int bit = type % 8; + + bitmap[index] &= ~(1 << bit); +} + +/********************************* End of Helper functions + * *************************/ + +struct cudbg_init * +cudbg_get_init(void *handle) +{ + return (handle); +} |
