Lines Matching refs:block

64     AppSpawnMsgBlock *block = (AppSpawnMsgBlock *)calloc(1, MAX_MSG_BLOCK_LEN);
65 APPSPAWN_CHECK(block != NULL, return NULL, "Failed to create block");
66 OH_ListInit(&block->node);
67 block->blockSize = MAX_MSG_BLOCK_LEN - sizeof(AppSpawnMsgBlock);
68 block->currentIndex = 0;
69 OH_ListAddTail(&reqNode->msgBlocks, &block->node);
70 return block;
75 AppSpawnMsgBlock *block = NULL;
78 block = ListEntry(node, AppSpawnMsgBlock, node);
79 if ((block->blockSize - block->currentIndex) >= realLen) {
80 return block;
89 AppSpawnMsgBlock *block = NULL;
92 block = ListEntry(node, AppSpawnMsgBlock, node);
94 return block;
99 AppSpawnMsgBlock *block = ListEntry(node, AppSpawnMsgBlock, node);
102 free(block);
105 static int AddAppDataToBlock(AppSpawnMsgBlock *block, const uint8_t *data, uint32_t dataLen, int32_t dataType)
107 APPSPAWN_CHECK(block->blockSize > block->currentIndex,
109 uint32_t reminderLen = block->blockSize - block->currentIndex;
112 int ret = memcpy_s(block->buffer + block->currentIndex, reminderLen, data, dataLen);
115 *((char *)block->buffer + block->currentIndex + dataLen) = '\0';
117 block->currentIndex += realDataLen;
124 AppSpawnMsgBlock *block = GetTailMsgBlock(reqNode);
125 APPSPAWN_CHECK(block != NULL, return APPSPAWN_BUFFER_NOT_ENOUGH, "Not block info reqNode");
128 uint32_t reminderBufferLen = block->blockSize - block->currentIndex;
133 int ret = memcpy_s(block->buffer + block->currentIndex, reminderBufferLen, data + currLen, reminderDataLen);
135 block->currentIndex += realLen;
139 int ret = memcpy_s(block->buffer + block->currentIndex, reminderBufferLen, data + currLen, realCopy);
141 block->currentIndex += realCopy;
144 block = CreateAppSpawnMsgBlock(reqNode);
145 APPSPAWN_CHECK(block != NULL, return APPSPAWN_SYSTEM_ERROR, "Not enough buffer for data");
168 // 获取一个能保存改完整tlv的block
169 AppSpawnMsgBlock *block = GetValidMsgBlock(reqNode, tlv.tlvLen);
170 if (block != NULL) {
171 ret = AddAppDataToBlock(block, (uint8_t *)&tlv, sizeof(tlv), 0);
173 ret = AddAppDataToBlock(block, data->data, data->dataLen, data->dataType);
176 // 没有一个可用的block,最队列最后添加数据
207 // 获取一个能保存改完整tlv的block
208 AppSpawnMsgBlock *block = GetValidMsgBlock(reqNode, tlv.tlvLen);
209 if (block != NULL) {
210 ret = AddAppDataToBlock(block, (uint8_t *)&tlv, sizeof(tlv), 0);
214 ret = AddAppDataToBlock(block, (uint8_t *)data[index].data, data[index].dataLen, data[index].dataType);
218 // 没有一个可用的block,最队列最后添加数据
233 AppSpawnMsgBlock *block, AppSpawnMsgFlags **msgFlags, int type, int maxCount)
238 APPSPAWN_CHECK((block->blockSize - block->currentIndex) > flagsLen,
239 return APPSPAWN_BUFFER_NOT_ENOUGH, "Invalid block to set flags tlv type %{public}d", type);
241 AppSpawnTlv *tlv = (AppSpawnTlv *)(block->buffer + block->currentIndex);
244 *msgFlags = (AppSpawnMsgFlags *)(block->buffer + block->currentIndex + sizeof(AppSpawnTlv));
246 block->currentIndex += flagsLen;
254 AppSpawnMsgBlock *block = CreateAppSpawnMsgBlock(reqNode);
255 APPSPAWN_CHECK(block != NULL, return APPSPAWN_SYSTEM_ERROR, "Failed to create block for %{public}s", processName);
258 reqNode->msg = (AppSpawnMsg *)(block->buffer + block->currentIndex);
265 APPSPAWN_CHECK(ret == 0, return APPSPAWN_SYSTEM_ERROR, "Failed to create block for %{public}s", processName);
266 block->currentIndex = sizeof(AppSpawnMsg);
267 ret = SetFlagsTlv(reqNode, block, &reqNode->msgFlags, TLV_MSG_FLAGS, MAX_FLAGS_INDEX);
272 ret = SetFlagsTlv(reqNode, block, &reqNode->permissionFlags, TLV_PERMISSION, maxCount);
274 APPSPAWN_LOGV("CreateBaseMsg msgLen: %{public}u %{public}u", reqNode->msg->msgLen, block->currentIndex);
285 // 释放block