int result;
char path[MAX_PATH_LENGTH] = {0, };
- str_name_cpy(path, parentdir, strlen(parentdir) + 1);
+ result = str_name_cpy(path, parentdir, sizeof(path), strlen(parentdir));
+ ret_value_if(result < 0, result);
for(int i = CGROUP_VIP; i < CGROUP_END; i++) {
char name[MAX_NAME_LENGTH] = {0, };
if(i == CGROUP_VIP) {
- str_name_cpy(name, MAKE_NAME(VIP), strlen(MAKE_NAME(VIP))+ 1);
+ result = str_name_cpy(name, MAKE_NAME(VIP), sizeof(name), strlen(MAKE_NAME(VIP)));
+ ret_value_if(result < 0, result);
}
else if(i == CGROUP_HIGH) {
- str_name_cpy(name, MAKE_NAME(HIGH), strlen(MAKE_NAME(HIGH))+ 1);
+ result = str_name_cpy(name, MAKE_NAME(HIGH), sizeof(name), strlen(MAKE_NAME(HIGH)));
+ ret_value_if(result < 0, result);
}
else if(i == CGROUP_MEDIUM) {
- str_name_cpy(name, MAKE_NAME(MEDIUM), strlen(MAKE_NAME(MEDIUM))+ 1);
+ result = str_name_cpy(name, MAKE_NAME(MEDIUM), sizeof(name), strlen(MAKE_NAME(MEDIUM)));
+ ret_value_if(result < 0, result);
}
else if(i == CGROUP_LOW) {
- str_name_cpy(name, MAKE_NAME(LOW), strlen(MAKE_NAME(LOW))+ 1);
+ result = str_name_cpy(name, MAKE_NAME(LOW), sizeof(name), strlen(MAKE_NAME(LOW)));
+ ret_value_if(result < 0, result);
}
result = cgroup_make_subdir(path, name, NULL);
ret_value_msg_if(result < 0, result, "%s/%s init failed\n", path, name);
- str_name_cat(path, "/", 2);
- str_name_cat(path, name, strlen(name) + 1);
+ result = str_name_cat(path, "/", sizeof(path), strlen(path), 1);
+ ret_value_if(result < 0, result);
+ result = str_name_cat(path, name, sizeof(path), strlen(path), strlen(name));
+ ret_value_if(result < 0, result);
// ../../perprocess
- result = cgroup_make_subdir(path, MAKE_NAME(PER_PROCESS), NULL);
+/* result = cgroup_make_subdir(path, MAKE_NAME(PER_PROCESS), NULL);
ret_value_msg_if(result < 0, result, "%s/%s init failed\n",
path, MAKE_NAME(PER_PROCESS));
// ../../group
result = cgroup_make_subdir(path, MAKE_NAME(GROUP), NULL);
ret_value_msg_if(result < 0, result, "%s/%s init failed\n",
- path, MAKE_NAME(GROUP));
+ path, MAKE_NAME(GROUP));*/
}
return RESOURCED_ERROR_NONE;
attr->sched_nice = getpriority(PRIO_PROCESS, pid);
error = sched_getparam(pid, &sp);
- if (!error)
+ if (!error) {
attr->sched_priority = sp.sched_priority;
-
- if (attr->sched_policy > 0 && !error)
return RESOURCED_ERROR_NONE;
+ }
else
return RESOURCED_ERROR_FAIL;
#endif
free(*strv);
*strv = NULL;
}
+
+int str_name_cpy(char *dst, const char *src, int dst_size, int src_length)
+{
+ bool success = dst_size >= src_length + 1 ? true : false;
+ if (success) {
+ strncpy(dst, src, src_length + 1);
+ return RESOURCED_ERROR_NONE;
+ }
+ else {
+ return RESOURCED_ERROR_FAIL;
+ }
+}
+
+int str_name_cat(char *dst, const char *src, int dst_size, int dst_length, int src_length)
+{
+ bool success = dst_size >= dst_length + src_length + 1 ? true : false;
+ if (success) {
+ strncat(dst, src, src_length + 1);
+ return RESOURCED_ERROR_NONE;
+ }
+ else {
+ return RESOURCED_ERROR_FAIL;
+ }
+}
#define FOREACH_STRV(s, l) \
for ((s) = (l); (s) && *(s); (s)++)
-#define str_name_cpy(dst, src, length) \
- do { \
- bool success = sizeof(dst) >= length ? true : false; \
- if(success) { \
- strncpy(dst, src, sizeof(dst) - 1); \
- } \
- else { \
- return RESOURCED_ERROR_OUT_OF_MEMORY; \
- } \
- } while(0)
-
-#define str_name_cat(dst, src, length) \
- do { \
- bool success = sizeof(dst) >= strlen(dst) + length ? true : false; \
- if(success) { \
- strncat(dst, src, sizeof(dst) - strlen(dst) - 1); \
- } \
- else { \
- return RESOURCED_ERROR_OUT_OF_MEMORY; \
- } \
- } while(0)
-
-
/**
* @desc executes given command and dumps output to a file
* @param argv - command to be executed with parameters
int sched_setattr(pid_t pid, struct sched_attr *attr, unsigned int flags);
int sched_getattr(pid_t pid, struct sched_attr *attr, unsigned int flags);
+int str_name_cpy(char *dst, const char *src, int dst_size, int src_length);
+int str_name_cat(char *dst, const char *src, int dst_size, int dst_length, int src_length);
+
#ifdef __cplusplus
}
#endif /* __cplusplus */