1*7e6ad469SVishal Kulkarni #include "cudbg.h"
2*7e6ad469SVishal Kulkarni 
3*7e6ad469SVishal Kulkarni void
init_cudbg_hdr(struct cudbg_init_hdr * hdr)4*7e6ad469SVishal Kulkarni init_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 Kulkarni cudbg_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 Kulkarni cudbg_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 Kulkarni set_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 Kulkarni reset_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 Kulkarni cudbg_get_init(void *handle)
78*7e6ad469SVishal Kulkarni {
79*7e6ad469SVishal Kulkarni 	return (handle);
80*7e6ad469SVishal Kulkarni }
81