本文整理汇总了C++中STATS_INC函数的典型用法代码示例。如果您正苦于以下问题:C++ STATS_INC函数的具体用法?C++ STATS_INC怎么用?C++ STATS_INC使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了STATS_INC函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ble_hs_hci_evt_process
int
ble_hs_hci_evt_process(uint8_t *data)
{
const struct ble_hs_hci_evt_dispatch_entry *entry;
uint8_t event_code;
uint8_t param_len;
int event_len;
int rc;
/* Count events received */
STATS_INC(ble_hs_stats, hci_event);
/* Display to console */
ble_hs_dbg_event_disp(data);
/* Process the event */
event_code = data[0];
param_len = data[1];
event_len = param_len + 2;
entry = ble_hs_hci_evt_dispatch_find(event_code);
if (entry == NULL) {
STATS_INC(ble_hs_stats, hci_unknown_event);
rc = BLE_HS_ENOTSUP;
} else {
rc = entry->cb(event_code, data, event_len);
}
ble_hci_trans_buf_free(data);
return rc;
}
示例2: ble_ll_count_rx_stats
/**
* Count Link Layer statistics for received PDUs
*
* Context: Link layer task
*
* @param hdr
* @param len
*/
static void
ble_ll_count_rx_stats(struct ble_mbuf_hdr *hdr, uint16_t len, uint8_t pdu_type)
{
uint8_t crcok;
uint8_t chan;
crcok = BLE_MBUF_HDR_CRC_OK(hdr);
chan = hdr->rxinfo.channel;
if (crcok) {
if (chan < BLE_PHY_NUM_DATA_CHANS) {
STATS_INC(ble_ll_stats, rx_data_pdu_crc_ok);
STATS_INCN(ble_ll_stats, rx_data_bytes_crc_ok, len);
} else {
STATS_INC(ble_ll_stats, rx_adv_pdu_crc_ok);
STATS_INCN(ble_ll_stats, rx_adv_bytes_crc_ok, len);
ble_ll_count_rx_adv_pdus(pdu_type);
}
} else {
if (chan < BLE_PHY_NUM_DATA_CHANS) {
STATS_INC(ble_ll_stats, rx_data_pdu_crc_err);
STATS_INCN(ble_ll_stats, rx_data_bytes_crc_err, len);
} else {
STATS_INC(ble_ll_stats, rx_adv_pdu_crc_err);
STATS_INCN(ble_ll_stats, rx_adv_bytes_crc_err, len);
}
}
}
示例3: sys_mbox_new
/**
* Creates a new mailbox.
*
* @param size is the number of entries in the mailbox.
* @return the handle of the created mailbox.
*/
sys_mbox_t
sys_mbox_new(int size)
{
unsigned long datasize;
xQueueHandle mbox;
u32_t i;
/* Fail if the mailbox size is too large. */
if(size > MBOX_MAX) {
#if SYS_STATS
STATS_INC(sys.mbox.err);
#endif /* SYS_STATS */
return 0;
}
/* Find a mailbox that is not in use. */
for(i = 0; i < SYS_MBOX_MAX; i++) {
if(mboxes[i].queue == 0) {
break;
}
}
if(i == SYS_MBOX_MAX) {
#if SYS_STATS
STATS_INC(sys.mbox.err);
#endif /* SYS_STATS */
return 0;
}
/* Compute the size of the queue memory required by this mailbox. */
datasize = (sizeof(void *) * size) + portQUEUE_OVERHEAD_BYTES;
/* Create a queue for this mailbox. */
if(xQueueCreate(mboxes[i].buffer, datasize, size, sizeof(void *),
&mbox) != pdPASS) {
#if SYS_STATS
STATS_INC(sys.mbox.err);
#endif /* SYS_STATS */
return 0;
}
/* Update the mailbox statistics. */
#if SYS_STATS
STATS_INC(sys.mbox.used);
#if LWIP_STATS
if(lwip_stats.sys.mbox.max < lwip_stats.sys.mbox.used) {
lwip_stats.sys.mbox.max = lwip_stats.sys.mbox.used;
}
#endif
#endif /* SYS_STATS */
/* Save the queue handle. */
mboxes[i].queue = mbox;
/* Return this mailbox. */
return &(mboxes[i]);
}
示例4: ble_ll_rx_start
/**
* Called upon start of received PDU
*
* Context: Interrupt
*
* @param rxpdu
* chan
*
* @return int
* < 0: A frame we dont want to receive.
* = 0: Continue to receive frame. Dont go from rx to tx
* > 0: Continue to receive frame and go from rx to tx when done
*/
int
ble_ll_rx_start(uint8_t *rxbuf, uint8_t chan, struct ble_mbuf_hdr *rxhdr)
{
int rc;
uint8_t pdu_type;
ble_ll_log(BLE_LL_LOG_ID_RX_START, chan, 0, rxhdr->beg_cputime);
/* Check channel type */
if (chan < BLE_PHY_NUM_DATA_CHANS) {
/*
* Data channel pdu. We should be in CONNECTION state with an
* ongoing connection
*/
if (g_ble_ll_data.ll_state == BLE_LL_STATE_CONNECTION) {
rc = ble_ll_conn_rx_isr_start(rxhdr, ble_phy_access_addr_get());
} else {
STATS_INC(ble_ll_stats, bad_ll_state);
rc = 0;
}
return rc;
}
/* Advertising channel PDU */
pdu_type = rxbuf[0] & BLE_ADV_PDU_HDR_TYPE_MASK;
switch (g_ble_ll_data.ll_state) {
case BLE_LL_STATE_ADV:
rc = ble_ll_adv_rx_isr_start(pdu_type);
break;
case BLE_LL_STATE_INITIATING:
if ((pdu_type == BLE_ADV_PDU_TYPE_ADV_IND) ||
(pdu_type == BLE_ADV_PDU_TYPE_ADV_DIRECT_IND)) {
rc = 1;
} else {
rc = 0;
}
break;
case BLE_LL_STATE_SCANNING:
rc = ble_ll_scan_rx_isr_start(pdu_type, &rxhdr->rxinfo.flags);
break;
case BLE_LL_STATE_CONNECTION:
/* Should not occur */
assert(0);
rc = 0;
break;
default:
/* Should not be in this state! */
rc = -1;
STATS_INC(ble_ll_stats, bad_ll_state);
break;
}
return rc;
}
示例5: sys_mbox_new
/**
* Creates a new mailbox.
*
* @param size is the number of entries in the mailbox.
* @return the handle of the created mailbox.
*/
err_t
sys_mbox_new(sys_mbox_t *mbox, int size)
{
u32_t i;
/* Fail if the mailbox size is too large. */
if(size > MBOX_MAX) {
#if SYS_STATS
STATS_INC(sys.mbox.err);
#endif /* SYS_STATS */
return ERR_MEM;
}
/* Find a mailbox that is not in use. */
for(i = 0; i < SYS_MBOX_MAX; i++) {
if(mboxes[i].queue == 0) {
break;
}
}
if(i == SYS_MBOX_MAX) {
#if SYS_STATS
STATS_INC(sys.mbox.err);
#endif /* SYS_STATS */
return ERR_MEM;
}
#if RTOS_FREERTOS
/* Create a queue for this mailbox. */
mbox->queue = xQueueCreate(size, sizeof(void *));
if(mbox == NULL) {
#endif /* RTOS_FREERTOS */
#if SYS_STATS
STATS_INC(sys.mbox.err);
#endif /* SYS_STATS */
return ERR_MEM;
}
/* Update the mailbox statistics. */
#if SYS_STATS
STATS_INC(sys.mbox.used);
#if LWIP_STATS
if(lwip_stats.sys.mbox.max < lwip_stats.sys.mbox.used) {
lwip_stats.sys.mbox.max = lwip_stats.sys.mbox.used;
}
#endif
#endif /* SYS_STATS */
/* Save the queue handle. */
mboxes[i].queue = mbox->queue;
/* Return this mailbox. */
return ERR_OK;
}
示例6: sys_sem_new
/**
* Creates a new semaphore.
*
* @param count is non-zero if the semaphore should be acquired initially.
* @return the handle of the created semaphore.
*/
err_t
sys_sem_new(sys_sem_t *sem, u8_t count)
{
void *temp;
u32_t i;
/* Find a semaphore that is not in use. */
for(i = 0; i < SYS_SEM_MAX; i++) {
if(sems[i].queue == 0) {
break;
}
}
if(i == SYS_SEM_MAX) {
#if SYS_STATS
STATS_INC(sys.sem.err);
#endif /* SYS_STATS */
return ERR_MEM;
}
/* Create a single-entry queue to act as a semaphore. */
#if RTOS_FREERTOS
sem->queue = xQueueCreate(1, sizeof(void *));
if(sem->queue == NULL) {
#endif /* RTOS_FREERTOS */
#if SYS_STATS
STATS_INC(sys.sem.err);
#endif /* SYS_STATS */
return ERR_MEM;
}
/* Acquired the semaphore if necessary. */
if(count == 0) {
temp = 0;
xQueueSend(sem->queue, &temp, 0);
}
/* Update the semaphore statistics. */
#if SYS_STATS
STATS_INC(sys.sem.used);
#if LWIP_STATS
if(lwip_stats.sys.sem.max < lwip_stats.sys.sem.used) {
lwip_stats.sys.sem.max = lwip_stats.sys.sem.used;
}
#endif
#endif /* SYS_STATS */
/* Save the queue handle. */
sems[i].queue = sem->queue;
/* Return this semaphore. */
return (ERR_OK);
}
示例7: tsl2561_get_data
int
tsl2561_get_data(uint16_t *broadband, uint16_t *ir, struct tsl2561 *tsl2561)
{
int rc;
int delay_ticks;
/* Wait integration time ms before getting a data sample */
switch (tsl2561->cfg.integration_time) {
case TSL2561_LIGHT_ITIME_13MS:
delay_ticks = 14 * OS_TICKS_PER_SEC / 1000;
break;
case TSL2561_LIGHT_ITIME_101MS:
delay_ticks = 102 * OS_TICKS_PER_SEC / 1000;
break;
case TSL2561_LIGHT_ITIME_402MS:
default:
delay_ticks = 403 * OS_TICKS_PER_SEC / 1000;
break;
}
os_time_delay(delay_ticks);
*broadband = *ir = 0;
rc = tsl2561_read16(TSL2561_COMMAND_BIT | TSL2561_WORD_BIT | TSL2561_REGISTER_CHAN0_LOW,
broadband);
if (rc) {
goto err;
}
rc = tsl2561_read16(TSL2561_COMMAND_BIT | TSL2561_WORD_BIT | TSL2561_REGISTER_CHAN1_LOW,
ir);
if (rc) {
goto err;
}
#if MYNEWT_VAL(TSL2561_STATS)
switch (tsl2561->cfg.integration_time) {
case TSL2561_LIGHT_ITIME_13MS:
STATS_INC(g_tsl2561stats, samples_13ms);
break;
case TSL2561_LIGHT_ITIME_101MS:
STATS_INC(g_tsl2561stats, samples_101ms);
break;
case TSL2561_LIGHT_ITIME_402MS:
STATS_INC(g_tsl2561stats, samples_402ms);
default:
break;
}
#endif
err:
return rc;
}
示例8: sys_sem_new
/**
* Creates a new semaphore.
*
* @param count is non-zero if the semaphore should be acquired initially.
* @return the handle of the created semaphore.
*/
sys_sem_t
sys_sem_new(u8_t count)
{
xQueueHandle sem;
void *temp;
u32_t i;
/* Find a semaphore that is not in use. */
for(i = 0; i < SYS_SEM_MAX; i++) {
if(sems[i].queue == 0) {
break;
}
}
if(i == SYS_SEM_MAX) {
#if SYS_STATS
STATS_INC(sys.sem.err);
#endif /* SYS_STATS */
return 0;
}
/* Create a single-entry queue to act as a semaphore. */
if(xQueueCreate(sems[i].buffer, sizeof(sems[0].buffer), 1, sizeof(void *),
&sem) != pdPASS) {
#if SYS_STATS
STATS_INC(sys.sem.err);
#endif /* SYS_STATS */
return 0;
}
/* Acquired the semaphore if necessary. */
if(count == 0) {
temp = 0;
xQueueSend(sem, &temp, 0);
}
/* Update the semaphore statistics. */
#if SYS_STATS
STATS_INC(sys.sem.used);
#if LWIP_STATS
if(lwip_stats.sys.sem.max < lwip_stats.sys.sem.used) {
lwip_stats.sys.sem.max = lwip_stats.sys.sem.used;
}
#endif
#endif /* SYS_STATS */
/* Save the queue handle. */
sems[i].queue = sem;
/* Return this semaphore. */
return &(sems[i]);
}
示例9: sys_mbox_free
/**
* Destroys a mailbox.
*
* @param mbox is the mailbox to be destroyed.
*/
void
sys_mbox_free(sys_mbox_t *mbox)
{
/* There should not be any messages waiting (if there are it is a bug). If
any are waiting, increment the mailbox error count. */
#if RTOS_FREERTOS
if(uxQueueMessagesWaiting(mbox->queue) != 0) {
#endif /* RTOS_FREERTOS */
#if SYS_STATS
STATS_INC(sys.mbox.err);
#endif /* SYS_STATS */
}
/* Find a semaphore that would be freed. */
u32_t i;
for(i = 0; i < SYS_MBOX_MAX; i++) {
if(mboxes[i].queue == mbox->queue) {
mboxes[i].queue = SYS_MBOX_NULL;
vSemaphoreDelete(mbox->queue);
mbox->queue = 0;
return;
}
}
/* Clear the queue handle. */
mbox->queue = 0;
/* Update the mailbox statistics. */
#if SYS_STATS
STATS_DEC(sys.mbox.used);
#endif /* SYS_STATS */
}
示例10: nffs_restore_disk_object
/**
* Reads a single disk object from flash.
*
* @param area_idx The area to read the object from.
* @param area_offset The offset within the area to read from.
* @param out_disk_object On success, the restored object gets written
* here.
*
* @return 0 on success; nonzero on failure.
*/
static int
nffs_restore_disk_object(int area_idx, uint32_t area_offset,
struct nffs_disk_object *out_disk_object)
{
int rc;
rc = nffs_flash_read(area_idx, area_offset,
&out_disk_object->ndo_un_obj,
sizeof(out_disk_object->ndo_un_obj));
if (rc != 0) {
return rc;
}
STATS_INC(nffs_stats, nffs_readcnt_object);
if (nffs_hash_id_is_inode(out_disk_object->ndo_disk_inode.ndi_id)) {
out_disk_object->ndo_type = NFFS_OBJECT_TYPE_INODE;
} else if (nffs_hash_id_is_block(out_disk_object->ndo_disk_block.ndb_id)) {
out_disk_object->ndo_type = NFFS_OBJECT_TYPE_BLOCK;
} else if (out_disk_object->ndo_disk_block.ndb_id == NFFS_ID_NONE) {
return FS_EEMPTY;
} else {
return FS_ECORRUPT;
}
out_disk_object->ndo_area_idx = area_idx;
out_disk_object->ndo_offset = area_offset;
return 0;
}
示例11: nffs_flash_write
/**
* Writes a chunk of data to flash.
*
* @param area_idx The index of the area to write to.
* @param area_offset The offset within the area to write to.
* @param data The data to write to flash.
* @param len The number of bytes to write.
*
* @return 0 on success;
* FS_EOFFSET on an attempt to write to an
* invalid address range, or on an attempt to
* perform a non-strictly-sequential write;
* FS_EFLASH_ERROR on flash error.
*/
int
nffs_flash_write(uint8_t area_idx, uint32_t area_offset, const void *data,
uint32_t len)
{
struct nffs_area *area;
int rc;
assert(area_idx < nffs_num_areas);
area = nffs_areas + area_idx;
if (area_offset + len > area->na_length) {
return FS_EOFFSET;
}
if (area_offset < area->na_cur) {
return FS_EOFFSET;
}
STATS_INC(nffs_stats, nffs_iocnt_write);
rc = nffs_os_flash_write(area->na_flash_id, area->na_offset + area_offset,
data, len);
if (rc != 0) {
return FS_EHW;
}
area->na_cur = area_offset + len;
return 0;
}
示例12: ble_l2cap_sig_reject_tx
int
ble_l2cap_sig_reject_tx(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan,
uint8_t id, uint16_t reason,
void *data, int data_len)
{
struct ble_l2cap_sig_reject cmd;
struct os_mbuf *txom;
void *payload_buf;
int rc;
rc = ble_l2cap_sig_init_cmd(BLE_L2CAP_SIG_OP_REJECT, id,
BLE_L2CAP_SIG_REJECT_MIN_SZ + data_len, &txom,
&payload_buf);
if (rc != 0) {
return rc;
}
cmd.reason = reason;
ble_l2cap_sig_reject_write(payload_buf, txom->om_len, &cmd,
data, data_len);
STATS_INC(ble_l2cap_stats, sig_rx);
rc = ble_l2cap_tx(conn, chan, txom);
if (rc != 0) {
return rc;
}
return 0;
}
示例13: ble_phy_isr
static void
ble_phy_isr(void)
{
uint32_t irq_en;
/* Read irq register to determine which interrupts are enabled */
irq_en = NRF_RADIO->INTENCLR;
/* Check for disabled event. This only happens for transmits now */
if ((irq_en & RADIO_INTENCLR_DISABLED_Msk) && NRF_RADIO->EVENTS_DISABLED) {
ble_phy_tx_end_isr();
}
/* We get this if we have started to receive a frame */
if ((irq_en & RADIO_INTENCLR_ADDRESS_Msk) && NRF_RADIO->EVENTS_ADDRESS) {
ble_phy_rx_start_isr();
}
/* Receive packet end (we dont enable this for transmit) */
if ((irq_en & RADIO_INTENCLR_END_Msk) && NRF_RADIO->EVENTS_END) {
ble_phy_rx_end_isr();
}
/* Ensures IRQ is cleared */
irq_en = NRF_RADIO->SHORTS;
/* Count # of interrupts */
STATS_INC(ble_phy_stats, phy_isrs);
}
示例14: ble_phy_rx
/**
* Puts the phy into receive mode.
*
* @return int 0: success; BLE Phy error code otherwise
*/
int
ble_phy_rx(void)
{
/* Check radio state */
nrf_wait_disabled();
if (NRF_RADIO->STATE != RADIO_STATE_STATE_Disabled) {
ble_phy_disable();
STATS_INC(ble_phy_stats, radio_state_errs);
return BLE_PHY_ERR_RADIO_STATE;
}
/* Make sure all interrupts are disabled */
NRF_RADIO->INTENCLR = NRF_RADIO_IRQ_MASK_ALL;
/* Clear events prior to enabling receive */
NRF_RADIO->EVENTS_END = 0;
NRF_RADIO->EVENTS_DISABLED = 0;
/* Setup for rx */
ble_phy_rx_xcvr_setup();
/* Start the receive task in the radio if not automatically going to rx */
if ((NRF_PPI->CHEN & PPI_CHEN_CH21_Msk) == 0) {
NRF_RADIO->TASKS_RXEN = 1;
}
ble_ll_log(BLE_LL_LOG_ID_PHY_RX, g_ble_phy_data.phy_encrypted, 0, 0);
return 0;
}
示例15: BalloonPageFree
static void
BalloonPageFree(Balloon *b, // IN/OUT
int isLargePage) // IN
{
BalloonChunkList *chunkList = &b->pages[isLargePage];
BalloonChunk *chunk;
PageHandle page;
ASSERT(DblLnkLst_IsLinked(&chunkList->chunks));
chunk = DblLnkLst_Container(chunkList->chunks.next, BalloonChunk, node);
/* deallocate last page */
page = chunk->entries[--chunk->nEntries];
/* deallocate page */
OS_ReservedPageFree(page, isLargePage);
STATS_INC(b->stats.primFree[isLargePage]);
/* update balloon size */
b->nPages--;
/* reclaim chunk, if empty */
BalloonChunkDestroyEmpty(b, chunk, isLargePage);
}