void ConstantPoolCacheEntry::set_parameter_size(int value) { // This routine is called only in corner cases where the CPCE is not yet initialized. // See AbstractInterpreter::deopt_continue_after_entry. assert(_flags == 0 || parameter_size() == 0 || parameter_size() == value, err_msg("size must not change: parameter_size=%d, value=%d", parameter_size(), value)); // Setting the parameter size by itself is only safe if the // current value of _flags is 0, otherwise another thread may have // updated it and we don't want to overwrite that value. Don't // bother trying to update it once it's nonzero but always make // sure that the final parameter size agrees with what was passed. if (_flags == 0) { Atomic::cmpxchg_ptr((value & parameter_size_mask), &_flags, 0); } guarantee(parameter_size() == value, err_msg("size must not change: parameter_size=%d, value=%d", parameter_size(), value)); }
int assemble_send_targets(pdu_t *pdu, uint8_t *val) { negotiation_parameter_t par; uint8_t *buf; int len; par.key = K_SendTargets; par.list_num = 1; par.val.sval = val; len = parameter_size(&par); if ((buf = malloc(len, M_TEMP, M_WAITOK)) == NULL) { DEBOUT(("*** Out of memory in assemble_send_targets\n")); return ISCSI_STATUS_NO_RESOURCES; } pdu->temp_data = buf; pdu->temp_data_len = len; if (put_parameter(buf, len, &par) == 0) return ISCSI_STATUS_PARAMETER_INVALID; return 0; }
static __inline int total_size(negotiation_parameter_t *pars, int n) { int i, size; for (i = 0, size = 0; i < n; i++) { size += parameter_size(pars++); } return size; }
int main(int argc, char **argv) { //int cmd = PARA_CMD_SYSTEM_GBSHM_MUTEX; //int cmd = PARA_CMD_SYSTEM_TEST_VAR; //int cmd = PARA_CMD_SYSTEM_VIDEO_ENC_PARAM; int cmd = PARA_CMD_SYSTEM_NET_PARAM; SYS_INFO("cmd index = %d.\r\n", parameter_indexfind(cmd)); SYS_INFO("cmd argument count = %d.\r\n", parameter_argument_count(cmd)); SYS_INFO("cmd offset = %d.\r\n", parameter_offset(cmd)); SYS_INFO("cmd size = %d.\r\n", parameter_size(cmd)); return 0; }