1*7e6ad469SVishal Kulkarni #include "cudbg.h" 2*7e6ad469SVishal Kulkarni 3*7e6ad469SVishal Kulkarni void init_cudbg_hdr(struct cudbg_init_hdr * hdr)4*7e6ad469SVishal Kulkarniinit_cudbg_hdr(struct cudbg_init_hdr *hdr) 5*7e6ad469SVishal Kulkarni { 6*7e6ad469SVishal Kulkarni hdr->major_ver = CUDBG_MAJOR_VERSION; 7*7e6ad469SVishal Kulkarni hdr->minor_ver = CUDBG_MINOR_VERSION; 8*7e6ad469SVishal Kulkarni hdr->build_ver = CUDBG_BUILD_VERSION; 9*7e6ad469SVishal Kulkarni hdr->init_struct_size = sizeof(struct cudbg_init); 10*7e6ad469SVishal Kulkarni } 11*7e6ad469SVishal Kulkarni 12*7e6ad469SVishal Kulkarni /** 13*7e6ad469SVishal Kulkarni * cudbg_alloc_handle - Allocates and initializes a handle that represents 14*7e6ad469SVishal Kulkarni * cudbg state. Needs to called first before calling any other function. 15*7e6ad469SVishal Kulkarni * 16*7e6ad469SVishal Kulkarni * returns a pointer to memory that has a cudbg_init structure at the begining 17*7e6ad469SVishal Kulkarni * and enough space after that for internal book keeping. 18*7e6ad469SVishal Kulkarni */ 19*7e6ad469SVishal Kulkarni 20*7e6ad469SVishal Kulkarni void * cudbg_alloc_handle(void)21*7e6ad469SVishal Kulkarnicudbg_alloc_handle(void) 22*7e6ad469SVishal Kulkarni { 23*7e6ad469SVishal Kulkarni struct cudbg_private *handle; 24*7e6ad469SVishal Kulkarni 25*7e6ad469SVishal Kulkarni #ifdef _KERNEL 26*7e6ad469SVishal Kulkarni handle = kmem_zalloc(sizeof(*handle), KM_NOSLEEP); 27*7e6ad469SVishal Kulkarni #else 28*7e6ad469SVishal Kulkarni handle = malloc(sizeof(*handle)); 29*7e6ad469SVishal Kulkarni #endif 30*7e6ad469SVishal Kulkarni 31*7e6ad469SVishal Kulkarni if (handle == NULL) 32*7e6ad469SVishal Kulkarni return NULL; 33*7e6ad469SVishal Kulkarni 34*7e6ad469SVishal Kulkarni init_cudbg_hdr(&handle->dbg_init.header); 35*7e6ad469SVishal Kulkarni 36*7e6ad469SVishal Kulkarni return (handle); 37*7e6ad469SVishal Kulkarni } 38*7e6ad469SVishal Kulkarni 39*7e6ad469SVishal Kulkarni /** 40*7e6ad469SVishal Kulkarni * cudbg_free_handle - Release cudbg resources. 41*7e6ad469SVishal Kulkarni * ## Parameters ## 42*7e6ad469SVishal Kulkarni * @handle : A pointer returned by cudbg_alloc_handle. 43*7e6ad469SVishal Kulkarni */ 44*7e6ad469SVishal Kulkarni void cudbg_free_handle(void * handle)45*7e6ad469SVishal Kulkarnicudbg_free_handle(void *handle) 46*7e6ad469SVishal Kulkarni { 47*7e6ad469SVishal Kulkarni #ifdef _KERNEL 48*7e6ad469SVishal Kulkarni kmem_free(handle, sizeof(struct cudbg_private)); 49*7e6ad469SVishal Kulkarni #else 50*7e6ad469SVishal Kulkarni free(handle); 51*7e6ad469SVishal Kulkarni #endif 52*7e6ad469SVishal Kulkarni } 53*7e6ad469SVishal Kulkarni 54*7e6ad469SVishal Kulkarni /********************************* Helper functions *************************/ 55*7e6ad469SVishal Kulkarni void set_dbg_bitmap(u8 * bitmap,enum CUDBG_DBG_ENTITY_TYPE type)56*7e6ad469SVishal Kulkarniset_dbg_bitmap(u8 *bitmap, enum CUDBG_DBG_ENTITY_TYPE type) 57*7e6ad469SVishal Kulkarni { 58*7e6ad469SVishal Kulkarni int index = type / 8; 59*7e6ad469SVishal Kulkarni int bit = type % 8; 60*7e6ad469SVishal Kulkarni 61*7e6ad469SVishal Kulkarni bitmap[index] |= (1 << bit); 62*7e6ad469SVishal Kulkarni } 63*7e6ad469SVishal Kulkarni 64*7e6ad469SVishal Kulkarni void reset_dbg_bitmap(u8 * bitmap,enum CUDBG_DBG_ENTITY_TYPE type)65*7e6ad469SVishal Kulkarnireset_dbg_bitmap(u8 *bitmap, enum CUDBG_DBG_ENTITY_TYPE type) 66*7e6ad469SVishal Kulkarni { 67*7e6ad469SVishal Kulkarni int index = type / 8; 68*7e6ad469SVishal Kulkarni int bit = type % 8; 69*7e6ad469SVishal Kulkarni 70*7e6ad469SVishal Kulkarni bitmap[index] &= ~(1 << bit); 71*7e6ad469SVishal Kulkarni } 72*7e6ad469SVishal Kulkarni 73*7e6ad469SVishal Kulkarni /********************************* End of Helper functions 74*7e6ad469SVishal Kulkarni * *************************/ 75*7e6ad469SVishal Kulkarni 76*7e6ad469SVishal Kulkarni struct cudbg_init * cudbg_get_init(void * handle)77*7e6ad469SVishal Kulkarnicudbg_get_init(void *handle) 78*7e6ad469SVishal Kulkarni { 79*7e6ad469SVishal Kulkarni return (handle); 80*7e6ad469SVishal Kulkarni } 81