Example #1
0
int cg_create(const char *controller, const char *path, const char *suffix) {
    _cleanup_free_ char *fs = NULL;
    int r;

#ifdef HAVE_CGMANAGER
    /* CGManager support */
    int existed;
    if (cgm_dbus_connect()) {
        if (!controller) {
            cgm_dbus_disconnect();
            return -1;
        }

        r = cgm_create(normalize_controller(controller),
                       path, &existed);

        cgm_dbus_disconnect();

        if (!r)
            return -1;

        return 1;
    }
#endif

    r = cg_get_path_and_check(controller, path, suffix, &fs);
    if (r < 0)
        return r;

    r = mkdir_parents_label(fs, 0755);
    if (r < 0)
        return r;

    if (mkdir(fs, 0755) < 0) {

        if (errno == EEXIST)
            return 0;

        return -errno;
    }

    return 1;
}
Example #2
0
int cg_attach(const char *controller, const char *path, pid_t pid) {
        char *fs;
        int r;
        char c[32];

        assert(controller);
        assert(path);
        assert(pid >= 0);

        r = cg_get_path_and_check(controller, path, "tasks", &fs);
        if (r < 0)
                return r;

        if (pid == 0)
                pid = getpid();

        snprintf(c, sizeof(c), "%lu\n", (unsigned long) pid);
        char_array_0(c);

        r = write_one_line_file(fs, c);
        free(fs);

        return r;
}