#endif
#endif
-#define SOCK_PATH "/run/.resourced.socket"
+#define MAX_THREAD_NUM 131072 /* This value is based on the max value of pid_max */
+#define SOCK_PATH "/run/.resourced.socket"
static int resource_create_and_connect_sock(void)
{
int sock;
cpu_boosting_input_t input;
- if (!resource_pid_input_is_valid(input.pid))
+ if (!resource_pid_input_is_valid(pid))
return -1;
if (!resource_cpu_boosting_level_input_is_valid(level))
int sock;
cpu_boosting_input_t input;
- if (!resource_pid_input_is_valid(input.pid))
+ if (!resource_pid_input_is_valid(pid))
return -1;
if ((sock = resource_create_and_connect_sock()) < 0)
input.command = CPU_BOOSTING_COMMAND_GET;
input.pid = pid;
+ input.level = CPU_BOOSTING_LEVEL_NONE;
+ input.timeout_msec = 0;
ret = resource_cpu_boosting_send_command(input, sock);
if (ret < 0)
tv.tv_sec = 3;
setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (struct timeval *)&tv, sizeof(tv));
+ memset(&output, 0, sizeof(output));
retry_header:
byte = recv(sock, (void *)&output, sizeof(output), 0);
if (byte != sizeof(output)) {
goto close_sock;
}
- if (output.level.tid_count > 0) {
+ if (output.level.tid_count > 0 && output.level.tid_count < MAX_THREAD_NUM) {
level->tid_level = (int *)calloc(output.level.tid_count, sizeof(int));
if (level->tid_level == NULL) {
_E("[CPU-BOOSTING-PLUGIN] Failed to allocate memory");
ret = -1;
goto close_sock;
}
- }
- if (!output.success) {
- _E("[CPU-BOOSTING-PLUGIN] Failed to get boosting");
- free(level->tid_level);
+ if (!output.success) {
+ _E("[CPU-BOOSTING-PLUGIN] Failed to get boosting from the server");
+ free(level->tid_level);
+ ret = -1;
+ }
+ }
+ else {
+ _E("[CPU-BOOSTING-PLUGIN] Returned tid_count is out of scope");
ret = -1;
+ goto close_sock;
}
close_sock: