这篇教程C++ CHK_OVERFLOW函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中CHK_OVERFLOW函数的典型用法代码示例。如果您正苦于以下问题:C++ CHK_OVERFLOW函数的具体用法?C++ CHK_OVERFLOW怎么用?C++ CHK_OVERFLOW使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了CHK_OVERFLOW函数的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: diag_update_msg_maskstatic void diag_update_msg_mask(int start, int end , uint8_t *buf){ int found = 0, first, last, actual_last; uint8_t *actual_last_ptr; uint8_t *ptr = driver->msg_masks; uint8_t *ptr_buffer_start = &(*(driver->msg_masks)); uint8_t *ptr_buffer_end = &(*(driver->msg_masks)) + MSG_MASK_SIZE; mutex_lock(&driver->diagchar_mutex); /* First SSID can be zero : So check that last is non-zero */ while (*(uint32_t *)(ptr + 4)) { first = *(uint32_t *)ptr; ptr += 4; last = *(uint32_t *)ptr; ptr += 4; actual_last = *(uint32_t *)ptr; actual_last_ptr = ptr; ptr += 4; if (start >= first && start <= actual_last) { ptr += (start - first)*4; if (end > actual_last) { pr_info("diag: ssid range mismatch/n"); actual_last = end; *(uint32_t *)(actual_last_ptr) = end; } if (CHK_OVERFLOW(ptr_buffer_start, ptr, ptr_buffer_end, (((end - start)+1)*4))) { pr_debug("diag: update ssid start %d, end %d/n", start, end); memcpy(ptr, buf , ((end - start)+1)*4); } else pr_alert("diag: Not enough space MSG_MASK/n"); found = 1; break; } else { ptr += MAX_SSID_PER_RANGE*4; } } /* Entry was not found - add new table */ if (!found) { if (CHK_OVERFLOW(ptr_buffer_start, ptr, ptr_buffer_end, 8 + ((end - start) + 1)*4)) { memcpy(ptr, &(start) , 4); ptr += 4; memcpy(ptr, &(end), 4); ptr += 4; memcpy(ptr, &(end), 4); /* create actual_last entry */ ptr += 4; pr_debug("diag: adding NEW ssid start %d, end %d/n", start, end); memcpy(ptr, buf , ((end - start) + 1)*4); } else pr_alert("diag: Not enough buffer space for MSG_MASK/n"); } mutex_unlock(&driver->diagchar_mutex); diag_print_mask_table();}
开发者ID:Adrioid83,项目名称:jflte_xxx,代码行数:58,
示例2: diag_update_log_maskstatic void diag_update_log_mask(int equip_id, uint8_t *buf, int num_items){ uint8_t *temp = buf; int i = 0; unsigned char *ptr_data; int offset = (sizeof(struct mask_info))*MAX_EQUIP_ID; struct mask_info *ptr = (struct mask_info *)(driver->log_masks); pr_debug("diag: received equip id = %d/n", equip_id); mutex_lock(&driver->diagchar_mutex); /* Check if we already know index of this equipment ID */ for (i = 0; i < MAX_EQUIP_ID; i++) { if ((ptr->equip_id == equip_id) && (ptr->index != 0)) { offset = ptr->index; break; } if ((ptr->equip_id == 0) && (ptr->index == 0)) { /* Reached a null entry */ ptr->equip_id = equip_id; ptr->num_items = num_items; ptr->index = driver->log_masks_length; offset = driver->log_masks_length; driver->log_masks_length += ((num_items+7)/8); break; } ptr++; } ptr_data = driver->log_masks + offset; if (CHK_OVERFLOW(driver->log_masks, ptr_data, driver->log_masks + LOG_MASK_SIZE, (num_items+7)/8)) memcpy(ptr_data, temp , (num_items+7)/8); else pr_err("diag: Not enough buffer space for LOG_MASK/n"); mutex_unlock(&driver->diagchar_mutex);}
开发者ID:Adrioid83,项目名称:jflte_xxx,代码行数:35,
示例3: diag_update_log_maskstatic void diag_update_log_mask(uint8_t *buf, int num_items){ uint8_t *ptr = driver->log_masks; uint8_t *temp = buf; mutex_lock(&driver->diagchar_mutex); if (CHK_OVERFLOW(ptr, ptr, ptr + LOG_MASK_SIZE, (num_items+7)/8)) memcpy(ptr, temp , (num_items+7)/8); else printk(KERN_CRIT " Not enough buffer space for LOG_MASK/n"); mutex_unlock(&driver->diagchar_mutex);}
开发者ID:AntonioPT,项目名称:u8150-kernel-pulse-port,代码行数:13,
示例4: diag_update_event_maskstatic void diag_update_event_mask(uint8_t *buf, int num_bytes){ uint8_t *ptr = driver->event_masks; uint8_t *temp = buf + 2; mutex_lock(&driver->diagchar_mutex); if (CHK_OVERFLOW(ptr, ptr, ptr+EVENT_MASK_SIZE, num_bytes)) { memcpy(ptr, temp, num_bytes); driver->event_status = DIAG_CTRL_MASK_VALID; } else { pr_err("diag: In %s, not enough buffer space/n", __func__); } mutex_unlock(&driver->diagchar_mutex);}
开发者ID:Hani-K,项目名称:H-Vitamin,代码行数:14,
示例5: diag_update_event_maskstatic void diag_update_event_mask(uint8_t *buf, int toggle, int num_bytes){ uint8_t *ptr = driver->event_masks; uint8_t *temp = buf + 2; mutex_lock(&driver->diagchar_mutex); if (!toggle) memset(ptr, 0 , EVENT_MASK_SIZE); else if (CHK_OVERFLOW(ptr, ptr, ptr+EVENT_MASK_SIZE, num_bytes)) memcpy(ptr, temp , num_bytes); else printk(KERN_CRIT "Not enough buffer space for EVENT_MASK/n"); mutex_unlock(&driver->diagchar_mutex);}
开发者ID:Adrioid83,项目名称:jflte_xxx,代码行数:16,
示例6: diag_update_msg_maskstatic void diag_update_msg_mask(int start, int end , uint8_t *buf){ int found = 0, first, last, actual_last; uint8_t *actual_last_ptr; uint8_t *ptr = driver->msg_masks; uint8_t *ptr_buffer_start = &(*(driver->msg_masks)); uint8_t *ptr_buffer_end = &(*(driver->msg_masks)) + MSG_MASK_SIZE; uint32_t copy_len = (end - start + 1) * sizeof(int); mutex_lock(&driver->diagchar_mutex); while (*(uint32_t *)(ptr + 4)) { first = *(uint32_t *)ptr; ptr += 4; last = *(uint32_t *)ptr; ptr += 4; actual_last = *(uint32_t *)ptr; actual_last_ptr = ptr; ptr += 4; if (start >= first && start <= actual_last) { ptr += (start - first)*4; if (end > actual_last) { pr_info("diag: ssid range mismatch/n"); actual_last = end; *(uint32_t *)(actual_last_ptr) = end; } if (actual_last-first >= MAX_SSID_PER_RANGE) { pr_err("diag: In %s, truncating ssid range, %d-%d to max allowed: %d", __func__, first, actual_last, MAX_SSID_PER_RANGE); copy_len = MAX_SSID_PER_RANGE; actual_last = first + MAX_SSID_PER_RANGE; *(uint32_t *)actual_last_ptr = actual_last; } if (CHK_OVERFLOW(ptr_buffer_start, ptr, ptr_buffer_end, (((end - start)+1)*4))) { pr_debug("diag: update ssid start %d, end %d/n", start, end); memcpy(ptr, buf , copy_len); } else pr_alert("diag: Not enough space MSG_MASK/n"); found = 1; break; } else { ptr += MAX_SSID_PER_RANGE*4; } } if (!found) { if (CHK_OVERFLOW(ptr_buffer_start, ptr, ptr_buffer_end, 8 + ((end - start) + 1)*4)) { memcpy(ptr, &(start) , 4); ptr += 4; memcpy(ptr, &(end), 4); ptr += 4; memcpy(ptr, &(end), 4); ptr += 4; pr_debug("diag: adding NEW ssid start %d, end %d/n", start, end); memcpy(ptr, buf , ((end - start) + 1)*4); } else pr_alert("diag: Not enough buffer space for MSG_MASK/n"); } driver->msg_status = DIAG_CTRL_MASK_VALID; mutex_unlock(&driver->diagchar_mutex); diag_print_mask_table();}
开发者ID:DirtyDroidX,项目名称:android_kernel_htc_m8ul,代码行数:68,
示例7: diag_update_msg_maskstatic void diag_update_msg_mask(int start, int end , uint8_t *buf){ int found = 0; int first; int last; uint8_t *ptr = driver->msg_masks; uint8_t *ptr_buffer_start = &(*(driver->msg_masks)); uint8_t *ptr_buffer_end = &(*(driver->msg_masks)) + MSG_MASK_SIZE; mutex_lock(&driver->diagchar_mutex); /* First SSID can be zero : So check that last is non-zero */ while (*(uint32_t *)(ptr + 4)) { first = *(uint32_t *)ptr; ptr += 4; last = *(uint32_t *)ptr; ptr += 4; if (start >= first && start <= last) { ptr += (start - first)*4; if (end <= last) if (CHK_OVERFLOW(ptr_buffer_start, ptr, ptr_buffer_end, (((end - start)+1)*4))) memcpy(ptr, buf , ((end - start)+1)*4); else printk(KERN_CRIT "Not enough" " buffer space for" " MSG_MASK/n"); else printk(KERN_INFO "Unable to copy" " mask change/n"); found = 1; break; } else { ptr += ((last - first) + 1)*4; } } /* Entry was not found - add new table */ if (!found) { if (CHK_OVERFLOW(ptr_buffer_start, ptr, ptr_buffer_end, 8 + ((end - start) + 1)*4)) { memcpy(ptr, &(start) , 4); ptr += 4; memcpy(ptr, &(end), 4); ptr += 4; memcpy(ptr, buf , ((end - start) + 1)*4); } else printk(KERN_CRIT " Not enough buffer" " space for MSG_MASK/n"); } mutex_unlock(&driver->diagchar_mutex); diag_print_mask_table();#ifdef CONFIG_LGE_DIAG if(ptr[(LGE_DIAG_ICD_LOGGING_SSID-start)*4] == LGE_DIAG_ICD_LOGGING_SSID_MASK) { if(key_touch_logging_status == 0) { printk(KERN_INFO "[SLATE] %s : enable hard key press & pan tap event logging/n",__func__); key_touch_logging_status = 1; } } else { if(key_touch_logging_status == 1) { printk(KERN_INFO "[SLATE] %s : disable hard key press & pan tap event logging/n",__func__); key_touch_logging_status = 0; } }#endif /*CONFIG_LGE_DIAG*/}
开发者ID:downthemachine,项目名称:VM696-Kernel,代码行数:73,
注:本文中的CHK_OVERFLOW函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ CHKiRet函数代码示例 C++ CHK_ORET函数代码示例 |