res = fchmod(fd_shm, SHM_FILE_MODE);
if (res == -1) {
LOGE(MODULE_TEEC_LIB,
- "Cannot change permission of the %s shared memory file, error: %s",
- shm_name, strerror(errno));
+ "Cannot change permission of the %s shared memory file, error: %m",
+ shm_name);
return TEEC_ERROR_GENERIC;
}
TEE_USER_GROUP_NAME);
} else {
LOGE(MODULE_TEEC_LIB,
- "Failed to set TEE group, error: %s",
- strerror(errno));
+ "Failed to set TEE group, error: %m");
}
return TEEC_ERROR_GENERIC;
}
res = fchown(fd_shm, -1, tee_group->gr_gid);
if (res == -1) {
LOGE(MODULE_TEEC_LIB,
- "Failed to set TEE group of the %s shared memory file, error: %s",
- shm_name, strerror(errno));
+ "Failed to set TEE group of the %s shared memory file, error: %m",
+ shm_name);
return errno == EPERM ? TEEC_ERROR_ACCESS_DENIED : TEEC_ERROR_GENERIC;
}
return TEEC_SUCCESS;
fd_shm = shm_open(shm_name, O_RDWR | O_CREAT | O_EXCL, SHM_FILE_MODE);
if (fd_shm < 0 && errno != EEXIST) {
- LOGE(MODULE_TEEC_LIB, "Cannot create shared memory object '%s', error: %s",
- shm_name, strerror(errno));
+ LOGE(MODULE_TEEC_LIB, "Cannot create shared memory object '%s', error: %m",
+ shm_name);
tee_result = TEEC_ERROR_GENERIC;
goto exit;
}
size = alignSize(size);
if (ftruncate(fd_shm, size) == -1) {
- LOGE(MODULE_TEEC_LIB, "ftruncate failed, error: %s", strerror(errno));
+ LOGE(MODULE_TEEC_LIB, "ftruncate failed, error: %m");
tee_result = TEEC_ERROR_OUT_OF_MEMORY;
goto cleanup_shm;
}
fd_shm, 0);
if (shm->buffer == MAP_FAILED) {
- LOGE(MODULE_TEEC_LIB, "shmat failed, error: %s", strerror(errno));
+ LOGE(MODULE_TEEC_LIB, "shmat failed, error: %m");
tee_result = TEEC_ERROR_OUT_OF_MEMORY;
goto cleanup_shm;
}
TEEC_SharedMemoryImp *sharedMem_imp = (TEEC_SharedMemoryImp *)shm->imp;
if (munmap(sharedMem_imp->allocPtr, sharedMem_imp->size) == -1) {
- LOGE(MODULE_TEEC_LIB, "munmap failed, error: %s", strerror(errno));
+ LOGE(MODULE_TEEC_LIB, "munmap failed, error: %m");
return;
}
}
if (shm_unlink(shm_name) == -1) {
- LOGE(MODULE_TEEC_LIB, "shm_unlink failed for %s, error: %s", shm_name,
- strerror(errno));
+ LOGE(MODULE_TEEC_LIB, "shm_unlink failed for %s, error: %m", shm_name);
return;
}
}
if (munmap(item.pBuffer, item.size) == -1) {
- LOGE(MODULE_TEE_STUB, "cannot munmap buffer %p, error: %s", item.pBuffer, strerror(errno));
+ LOGE(MODULE_TEE_STUB, "cannot munmap buffer %p, error: %m", item.pBuffer);
return false;
}
}
if (errno != EEXIST) {
- LOGE(MODULE_TEE_STUB, "Cannot create shared memory object %s, error: %s",
- shm_name.c_str(), strerror(errno));
+ LOGE(MODULE_TEE_STUB, "Cannot create shared memory object %s, error: %m",
+ shm_name.c_str());
return NULL;
}
if (ftruncate(fd_shm, size) == -1) {
close(fd_shm);
- LOGE(MODULE_TEE_STUB, "ftruncate failed, error: %s", strerror(errno));
+ LOGE(MODULE_TEE_STUB, "ftruncate failed, error: %m");
return NULL;
}
void *buffer = (void *) mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd_shm, 0);
if (buffer == NULL) {
close(fd_shm);
- LOGE(MODULE_TEE_STUB, "newOnceSharedMemory mmap failed, size: %u error: %s",
- size, strerror(errno));
+ LOGE(MODULE_TEE_STUB, "newOnceSharedMemory mmap failed, size: %u error: %m", size);
return NULL;
}
std::string shm_name(SHM_NAME_PREFIX + std::to_string(it->first));
if (munmap(item.pBuffer, item.size) == -1) {
- LOGE(MODULE_TEE_STUB, "can not find munmap buffer %p, error: %s",
- buffer, strerror(errno));
+ LOGE(MODULE_TEE_STUB, "can not find munmap buffer %p, error: %m", buffer);
return false;
}
if (shm_unlink(shm_name.c_str()) == -1) {
- LOGE(MODULE_TEE_STUB, "cannot shm_unlink %s, error: %s",
- shm_name.c_str(), strerror(errno));
+ LOGE(MODULE_TEE_STUB, "cannot shm_unlink %s, error: %m", shm_name.c_str());
return false;
}
int fd_shm = shm_open(shm_name.c_str(), O_RDWR, 0);
if (fd_shm == -1) {
- LOGE(MODULE_TEE_STUB, "shm_open %s failed, error: %s", shm_name.c_str(), strerror(errno));
+ LOGE(MODULE_TEE_STUB, "shm_open %s failed, error: %m", shm_name.c_str());
return false;
}
close(fd_shm);
if (op.params[i].memref.buffer == MAP_FAILED) {
- LOGE(MODULE_TEE_STUB, "allocateSharedMemory mmap failed, size: %u error: %s",
- size, strerror(errno));
+ LOGE(MODULE_TEE_STUB, "allocateSharedMemory mmap failed, size: %u error: %m", size);
return false;
}
std::string shm_name(SHM_NAME_PREFIX + std::to_string(it->first));
if (munmap(item.pBuffer, item.size) == -1) {
- LOGE(MODULE_TEE_STUB, "cannot munmap buffer %p, error: %s",
- item.pBuffer, strerror(errno));
+ LOGE(MODULE_TEE_STUB, "cannot munmap buffer %p, error: %m", item.pBuffer);
return false;
}
if (shm_unlink(shm_name.c_str()) == -1) {
- LOGE(MODULE_TEE_STUB, "cannot shm_unlink %s, error: %s",
- shm_name.c_str(), strerror(errno));
+ LOGE(MODULE_TEE_STUB, "cannot shm_unlink %s, error: %m", shm_name.c_str());
return false;
}
ret = sem_trywait(&sem->sem);
if (ret != 0 && errno == EAGAIN) {
- usleep(10000);
- iTimeout -= 10000;
+ if (usleep(10000) == 0) {
+ iTimeout -= 10000;
+ }
} else // No-Error + Error without EAGAIN
break;
} while (iTimeout > 0);
break;
case CTL_QUERY_PORT:
handleQueryPortCommand(data);
+ break;
default:
handleInvalidCommand();
break;
result = chmod(info.imagePath.c_str(), st.st_mode|S_IXUSR|S_IXGRP|S_IXOTH);
}
if (result != 0) {
- LOGE(MODULE_SIM_DAEMON, "Unpacking executable TA failed: %s", strerror(errno));
+ LOGE(MODULE_SIM_DAEMON, "Unpacking executable TA failed: %m");
}
ret = true;
ofstream image(imageFile.c_str(), ios::out | ios::binary);
if (image.fail()) {
- LOGE(MODULE_SIM_DAEMON, "Open failed %s %s", imageFile.c_str(), strerror(errno));
+ LOGE(MODULE_SIM_DAEMON, "Open failed %s %m", imageFile.c_str());
return -1;
}
image.write(imagedump.get(), packageHeader.image_size);
ofstream manifest(manifestFile.c_str(), ios::out | ios::binary);
if (manifest.fail()) {
- LOGE(MODULE_SIM_DAEMON, "Open failed %s %s", manifestFile.c_str(), strerror(errno));
+ LOGE(MODULE_SIM_DAEMON, "Open failed %s %m", manifestFile.c_str());
return -1;
}
manifest.write(manifestdump.get(), packageHeader.manifest_size);
LOGD(MODULE_SIM_DAEMON, "Launched Trusted Application");
} else {
ret = errno;
- LOGE(MODULE_SIM_DAEMON, "Launching Trusted Application FAILED %s(%d)", strerror(ret), ret);
+ LOGE(MODULE_SIM_DAEMON, "Launching Trusted Application FAILED %m(%d)", ret);
pthread_mutex_unlock(&TABin->taLock);
return false;
}
err = errno;
close(sock);
exit:
- LOGE(MODULE_SIM_DAEMON, "Launching Trusted Application FAILED: %s", strerror(err));
+ errno = err;
+ LOGE(MODULE_SIM_DAEMON, "Launching Trusted Application FAILED: %m");
pthread_mutex_unlock(&lock);
return false;
}
* @param timeout The number of milliseconds to wait, or TEE_TIMEOUT_INFINITE
*/
TEE_Result TEE_Wait(uint32_t timeout) {
- bool isNeedCancel = false;
uint32_t decreaseTimeoutMillis = 500;
uint32_t remainTimeout = timeout;
while (1) {
+ TEMP_FAILURE_RETRY(usleep(decreaseTimeoutMillis * 1000));
if (timeout != TEE_TIMEOUT_INFINITE) {
- remainTimeout = remainTimeout - decreaseTimeoutMillis;
- if (remainTimeout <= 0) break;
+ if (remainTimeout <= decreaseTimeoutMillis) return TEE_SUCCESS;
+ remainTimeout -= decreaseTimeoutMillis;
}
- usleep(decreaseTimeoutMillis * 1000);
- if (TEE_GetCancellationFlag()) isNeedCancel = true;
+ if (TEE_GetCancellationFlag()) return TEE_ERROR_CANCEL;
}
- if (isNeedCancel == true) return TEE_ERROR_CANCEL;
- return TEE_SUCCESS;
}
/**