Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
return r;
}
+ // Connect the jail to our cgroup
+ r = pakfire_jail_set_cgroup(build->jail, build->cgroup);
+ if (r) {
+ ERROR(build->pakfire, "Could not set cgroup for jail: %m\n");
+ return r;
+ }
+
// Done
return 0;
}
#ifdef PAKFIRE_PRIVATE
+#include <pakfire/cgroup.h>
+
+// Resource limits
+int pakfire_jail_set_cgroup(struct pakfire_jail* jail, struct pakfire_cgroup* cgroup);
+
// Convenience functions
int pakfire_jail_run(struct pakfire* pakfire, const char* argv[], int flags, char*** output);
int pakfire_jail_run_script(struct pakfire* pakfire,
// Resource Limits
int nice;
+ // CGroup
+ struct pakfire_cgroup* cgroup;
+
// Environment
char* env[ENVIRON_SIZE];
return 0;
}
+int pakfire_jail_set_cgroup(struct pakfire_jail* jail, struct pakfire_cgroup* cgroup) {
+ // Free any previous cgroup
+ if (jail->cgroup) {
+ pakfire_cgroup_unref(jail->cgroup);
+ jail->cgroup = NULL;
+ }
+
+ // Set any new cgroup
+ if (cgroup) {
+ DEBUG(jail->pakfire, "Setting cgroup %p\n", cgroup);
+
+ jail->cgroup = pakfire_cgroup_ref(cgroup);
+ }
+
+ // Done
+ return 0;
+}
+
// Environment
// Returns the length of the environment