예제 #1
0
파일: main.cpp 프로젝트: DaveBerkeley/utils
TEST(List, Thread)
{
    ThreadTest tt = { 0, MUTEX_INIT, };

    // check the test works
    thrash(& tt);
    EXPECT_EQ(0, tt.head);

    int num = 100;
    pthread_t threads[num];

    for (int i = 0; i < num; i++)
    {
        int err = pthread_create(& threads[i], 0, thrash, & tt);
        ASSERT(err == 0);
    }

    for (int i = 0; i < num; i++)
    {
        int err = pthread_join(threads[i], 0);
        ASSERT(err == 0);
    }

    // should be an empty list
    EXPECT_EQ(0, tt.head);
    int size = item_size(& tt.head);
    EXPECT_EQ(0, size);
}
예제 #2
0
파일: main.cpp 프로젝트: DaveBerkeley/utils
TEST(List, Stack)
{
    int size;
    Item *head = 0;

    size = list_size((pList*) & head, pnext_item, 0);
    EXPECT_EQ(0, size);

    Item *item = 0;
    int num = 100;
    Item items[num];

    //  Initialise each item
    for (int i = 0; i < num; i++)
    {
        init_item(& items[i], i);
    }

    //  Push onto stack
    for (int i = 0; i < num; i++)
    {
        list_push((pList*) & head, (pList) & items[i], pnext_item, 0);
        size = item_size(& head);
        EXPECT_EQ(i+1, size);
    }

    //  Pop off stack
    for (int i = num-1; i >= 0; i--)
    {
        item = item_pop(& head);
        EXPECT_TRUE(item);
        // check it is the correct item
        EXPECT_EQ(& items[i], item);

        size = item_size(& head);
        EXPECT_EQ(i, size);

        // check the item is correct
        item_validate(item, i);
    }

    EXPECT_EQ(0, head);

    item = item_pop(& head);
    EXPECT_EQ(0, item);
}
예제 #3
0
파일: main.cpp 프로젝트: DaveBerkeley/utils
TEST(List, Sorted)
{
    int size;
    Item *head = 0;

    Item *item = 0;
    int num = 100;
    Item items[num];

    //  Initialise each item
    for (int i = 0; i < num; i++)
    {
        init_item(& items[i], i);
    }

    int block[num];
    rand_array(block, num);

    // add our items randomly to sorted list
    for (int i = 0; i < num; i++)
    {
        int idx = block[i];
        item = & items[idx];
        item_add_sorted(& head, item, 0);
    }

    //  Pop off stack : it should be in order
    for (int i = 0; i < num; i++)
    {
        item = item_pop(& head);
        EXPECT_TRUE(item);
        // check it is the correct item
        EXPECT_EQ(& items[i], item);

        // check the item is correct
        item_validate(item, i);
    }

    EXPECT_EQ(0, head);

    item = item_pop(& head);
    EXPECT_EQ(0, item);

    size = item_size(& head);
    EXPECT_EQ(0, size);
}
#define item_priv_size(n) (sizeof ((moal_private *)0)->n)
/** Get moal_private member address */
#define item_priv_addr(n) ((t_ptr) &((moal_private *)0)->n)

/** Get moal_handle member size */
#define item_handle_size(n) (sizeof ((moal_handle *)0)->n)
/** Get moal_handle member address */
#define item_handle_addr(n) ((t_ptr) &((moal_handle *)0)->n)

#ifdef STA_SUPPORT
static struct debug_data items[] = {
#ifdef DEBUG_LEVEL1
    {"drvdbg", sizeof(drvdbg), (t_ptr) & drvdbg}
    ,
#endif
    {"wmm_ac_vo", item_size(wmm_ac_vo), item_addr(wmm_ac_vo)}
    ,
    {"wmm_ac_vi", item_size(wmm_ac_vi), item_addr(wmm_ac_vi)}
    ,
    {"wmm_ac_be", item_size(wmm_ac_be), item_addr(wmm_ac_be)}
    ,
    {"wmm_ac_bk", item_size(wmm_ac_bk), item_addr(wmm_ac_bk)}
    ,
    {"max_tx_buf_size", item_size(max_tx_buf_size), item_addr(max_tx_buf_size)}
    ,
    {"tx_buf_size", item_size(tx_buf_size), item_addr(tx_buf_size)}
    ,
    {"curr_tx_buf_size", item_size(curr_tx_buf_size),
     item_addr(curr_tx_buf_size)}
    ,
    {"ps_mode", item_size(ps_mode), item_addr(ps_mode)}
예제 #5
0
파일: main.cpp 프로젝트: DaveBerkeley/utils
TEST(List, Remove)
{
    int size;
    Item *head = 0;

    //Item *item = 0;
    int num = 100;
    Item items[num];

    //  Initialise each item
    for (int i = 0; i < num; i++)
    {
        init_item(& items[i], i);
    }

    //  Append to stack
    for (int i = 0; i < num; i++)
    {
        list_append((pList*) & head, (pList) & items[i], pnext_item, 0);
        size = item_size(& head);
        EXPECT_EQ(i+1, size);
    }

    size = item_size(& head);
    EXPECT_EQ(num, size);

    //  Remove last item
    bool  found;
    int i = num - 1;
    Item *item = & items[i];
    found = item_remove(& head, item, 0);
    EXPECT_EQ(true, found);

    item_validate(item, i);
    // check it has gone
    size = item_size(& head);
    EXPECT_EQ(num-1, size);

    // can't remove it twice
    found = item_remove(& head, item, 0);
    EXPECT_EQ(false, found);

    //  Remove the first item
    i = 0;
    item = & items[i];
    found = item_remove(& head, item, 0);
    EXPECT_EQ(true, found);

    // check it has gone
    size = item_size(& head);
    EXPECT_EQ(num-2, size);

    // can't remove it twice
    found = item_remove(& head, item, 0);
    EXPECT_EQ(false, found);

    //  Remove from the middle
    i = num / 2;
    item = & items[i];
    found = item_remove(& head, item, 0);
    EXPECT_EQ(true, found);

    // check it has gone
    size = item_size(& head);
    EXPECT_EQ(num-3, size);

    // can't remove it twice
    found = item_remove(& head, item, 0);
    EXPECT_EQ(false, found);

    //  pop the rest off
    while (item_pop(& head))
    {
    }

    //  Try removing from an empty list
    EXPECT_EQ(0, head);
    found = item_remove(& head, item, 0);
    EXPECT_EQ(false, found);

}
예제 #6
0
#define item_size(n)		(FIELD_SIZEOF(struct mwifiex_debug_info, n))
#define item_addr(n)		(offsetof(struct mwifiex_debug_info, n))

/* size/addr for struct mwifiex_adapter */
#define adapter_item_size(n)	(FIELD_SIZEOF(struct mwifiex_adapter, n))
#define adapter_item_addr(n)	(offsetof(struct mwifiex_adapter, n))

struct mwifiex_debug_data {
	char name[32];		/* variable/array name */
	u32 size;		/* size of the variable/array */
	size_t addr;		/* address of the variable/array */
	int num;		/* number of variables in an array */
};

static struct mwifiex_debug_data items[] = {
	{"int_counter", item_size(int_counter),
	 item_addr(int_counter), 1},
	{"wmm_ac_vo", item_size(packets_out[WMM_AC_VO]),
	 item_addr(packets_out[WMM_AC_VO]), 1},
	{"wmm_ac_vi", item_size(packets_out[WMM_AC_VI]),
	 item_addr(packets_out[WMM_AC_VI]), 1},
	{"wmm_ac_be", item_size(packets_out[WMM_AC_BE]),
	 item_addr(packets_out[WMM_AC_BE]), 1},
	{"wmm_ac_bk", item_size(packets_out[WMM_AC_BK]),
	 item_addr(packets_out[WMM_AC_BK]), 1},
	{"max_tx_buf_size", item_size(max_tx_buf_size),
	 item_addr(max_tx_buf_size), 1},
	{"tx_buf_size", item_size(tx_buf_size),
	 item_addr(tx_buf_size), 1},
	{"curr_tx_buf_size", item_size(curr_tx_buf_size),
	 item_addr(curr_tx_buf_size), 1},
예제 #7
0
파일: debugfs.c 프로젝트: CSCLOG/beaglebone
#ifdef PROC_DEBUG

#define item_size(n)	(FIELD_SIZEOF(struct lbs_private, n))
#define item_addr(n)	(offsetof(struct lbs_private, n))


struct debug_data {
	char name[32];
	u32 size;
	size_t addr;
};

/* To debug any member of struct lbs_private, simply add one line here.
 */
static struct debug_data items[] = {
	{"psmode", item_size(psmode), item_addr(psmode)},
	{"psstate", item_size(psstate), item_addr(psstate)},
};

static int num_of_items = ARRAY_SIZE(items);

/**
 * lbs_debugfs_read - proc read function
 *
 * @file:	file to read
 * @userbuf:	pointer to buffer
 * @count:	number of bytes to read
 * @ppos:	read data starting position
 *
 * returns:	amount of data read or negative error code
 */
예제 #8
0
#define item1_addr(n) ((u32) &((wlan_dev_t *)0)->n)

struct debug_data
{
    char name[32];
    u32 size;
    u32 addr;
    u32 offset;
};

/* To debug any member of wlan_adapter or wlan_dev_t, simply add one line here.
 */
#define ITEMS_FROM_WLAN_DEV		1

static struct debug_data items[] = {
    {"IntCounter", item_size(IntCounter), 0, item_addr(IntCounter)},
    {"ConnectStatus", item_size(MediaConnectStatus), 0,
     item_addr(MediaConnectStatus)},
    {"wmmQStp", item_size(wmm.queueStopped), 0, item_addr(wmm.queueStopped)},
    {"wmmPkts", item_size(wmm.packetsQueued), 0,
     item_addr(wmm.packetsQueued)},
    {"wmmAcVo", item_size(wmm.packetsOut[WMM_AC_VO]), 0,
     item_addr(wmm.packetsOut[WMM_AC_VO])},
    {"wmmAcVi", item_size(wmm.packetsOut[WMM_AC_VI]), 0,
     item_addr(wmm.packetsOut[WMM_AC_VI])},
    {"wmmAcBE", item_size(wmm.packetsOut[WMM_AC_BE]), 0,
     item_addr(wmm.packetsOut[WMM_AC_BE])},
    {"wmmAcBK", item_size(wmm.packetsOut[WMM_AC_BK]), 0,
     item_addr(wmm.packetsOut[WMM_AC_BK])},
    {"PSMode", item_size(PSMode), 0, item_addr(PSMode)},
    {"PSState", item_size(PSState), 0, item_addr(PSState)},
예제 #9
0
    /** Address */
    u32 addr;
    /** Offset */
    u32 offset;
    /** Flag */
    u32 flag;
};

/* To debug any member of uap_adapter, simply add one line here.
 */
static struct debug_data items[] = {
    {"cmd_sent", item_dev_size(cmd_sent), 0, item_dev_addr(cmd_sent),
     OFFSET_UAP_DEV},
    {"data_sent", item_dev_size(data_sent), 0, item_dev_addr(data_sent),
     OFFSET_UAP_DEV},
    {"IntCounter", item_size(IntCounter), 0, item_addr(IntCounter),
     OFFSET_UAP_ADAPTER},
    {"cmd_pending", item_size(cmd_pending), 0, item_addr(cmd_pending),
     OFFSET_UAP_ADAPTER},
    {"num_cmd_h2c_fail", item_dbg_size(num_cmd_host_to_card_failure), 0,
     item_dbg_addr(num_cmd_host_to_card_failure), OFFSET_UAP_ADAPTER},
    {"num_tx_h2c_fail", item_dbg_size(num_tx_host_to_card_failure), 0,
     item_dbg_addr(num_tx_host_to_card_failure), OFFSET_UAP_ADAPTER},
    {"psmode", item_size(psmode), 0, item_addr(psmode), OFFSET_UAP_ADAPTER},
    {"ps_state", item_size(ps_state), 0, item_addr(ps_state),
     OFFSET_UAP_ADAPTER},
#ifdef DEBUG_LEVEL1
/*
 * XXX: bnewbold: HORRIBLE HACK here, blindly commenting this line out to avoid
 * gcc error:
 *