cpu: move to C++
authorRobert Swiecki <robert@swiecki.net>
Fri, 9 Feb 2018 16:41:16 +0000 (17:41 +0100)
committerRobert Swiecki <robert@swiecki.net>
Fri, 9 Feb 2018 16:41:16 +0000 (17:41 +0100)
Makefile
contain.cc
cpu.cc [moved from cpu.c with 91% similarity]
cpu.h

index ffcad4f..2f30677 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -35,8 +35,8 @@ LDFLAGS += -pie -Wl,-z,noexecstack -lpthread $(shell pkg-config --libs protobuf)
 
 BIN = nsjail
 LIBS = kafel/libkafel.a
-SRCS_C = caps.c log.c cgroup.c mount.c pid.c user.c util.c uts.c cpu.c
-SRCS_CXX = cmdline.cc config.cc contain.cc net.cc nsjail.cc sandbox.cc subproc.cc
+SRCS_C = caps.c log.c cgroup.c mount.c pid.c user.c util.c uts.c
+SRCS_CXX = cmdline.cc config.cc contain.cc cpu.cc net.cc nsjail.cc sandbox.cc subproc.cc
 SRCS_PROTO = config.proto
 SRCS_PB_CXX = $(SRCS_PROTO:.proto=.pb.cc)
 SRCS_PB_H = $(SRCS_PROTO:.proto=.pb.h)
@@ -105,13 +105,13 @@ pid.o: pid.h nsjail.h log.h subproc.h
 user.o: user.h nsjail.h common.h log.h subproc.h util.h
 util.o: util.h nsjail.h common.h log.h
 uts.o: uts.h nsjail.h log.h
-cpu.o: cpu.h nsjail.h log.h util.h
 cmdline.o: cmdline.h nsjail.h caps.h common.h log.h mount.h user.h util.h
 cmdline.o: config.h sandbox.h
 config.o: common.h caps.h nsjail.h config.h log.h mount.h user.h util.h
 config.o: cmdline.h
-contain.o: contain.h nsjail.h caps.h cgroup.h cpu.h log.h mount.h pid.h
-contain.o: user.h uts.h net.h
+contain.o: contain.h nsjail.h caps.h cgroup.h log.h mount.h pid.h user.h
+contain.o: uts.h cpu.h net.h
+cpu.o: cpu.h nsjail.h log.h util.h
 net.o: net.h nsjail.h log.h subproc.h
 nsjail.o: nsjail.h cmdline.h common.h log.h net.h subproc.h util.h
 sandbox.o: sandbox.h nsjail.h kafel/include/kafel.h log.h
index e8642d7..6ea3bdb 100644 (file)
@@ -40,7 +40,6 @@
 extern "C" {
 #include "caps.h"
 #include "cgroup.h"
-#include "cpu.h"
 #include "log.h"
 #include "mount.h"
 #include "pid.h"
@@ -48,6 +47,7 @@ extern "C" {
 #include "uts.h"
 }
 
+#include "cpu.h"
 #include "net.h"
 
 namespace contain {
@@ -101,7 +101,7 @@ static bool containPrepareEnv(struct nsjconf_t* nsjconf) {
 
 static bool containInitMountNs(struct nsjconf_t* nsjconf) { return mountInitNs(nsjconf); }
 
-static bool containCPU(struct nsjconf_t* nsjconf) { return cpuInit(nsjconf); }
+static bool containCPU(struct nsjconf_t* nsjconf) { return cpu::initCpu(nsjconf); }
 
 static bool containSetLimits(struct nsjconf_t* nsjconf) {
        struct rlimit64 rl;
diff --git a/cpu.c b/cpu.cc
similarity index 91%
rename from cpu.c
rename to cpu.cc
index bbd6c2f..40092e9 100644 (file)
--- a/cpu.c
+++ b/cpu.cc
 #include <string.h>
 #include <unistd.h>
 
+extern "C" {
 #include "log.h"
 #include "util.h"
+}
+
+namespace cpu {
 
-static void cpuSetRandomCpu(cpu_set_t* mask, size_t mask_size, size_t cpu_num) {
+static void setRandomCpu(cpu_set_t* mask, size_t mask_size, size_t cpu_num) {
        if ((size_t)CPU_COUNT_S(mask_size, mask) >= cpu_num) {
                LOG_F(
                    "Number of CPUs in the mask '%d' is bigger than number of available CPUs '%zu'",
@@ -47,7 +51,7 @@ static void cpuSetRandomCpu(cpu_set_t* mask, size_t mask_size, size_t cpu_num) {
        }
 }
 
-bool cpuInit(struct nsjconf_t* nsjconf) {
+bool initCpu(struct nsjconf_t* nsjconf) {
        if (nsjconf->num_cpus < 0) {
                PLOG_W("sysconf(_SC_NPROCESSORS_ONLN) returned %ld", nsjconf->num_cpus);
                return false;
@@ -76,7 +80,7 @@ bool cpuInit(struct nsjconf_t* nsjconf) {
        CPU_ZERO_S(mask_size, mask);
 
        for (size_t i = 0; i < nsjconf->max_cpus; i++) {
-               cpuSetRandomCpu(mask, mask_size, nsjconf->num_cpus);
+               setRandomCpu(mask, mask_size, nsjconf->num_cpus);
        }
 
        if (sched_setaffinity(0, mask_size, mask) == -1) {
@@ -88,3 +92,5 @@ bool cpuInit(struct nsjconf_t* nsjconf) {
 
        return true;
 }
+
+}  // namespace cpu
diff --git a/cpu.h b/cpu.h
index d4b71e5..49c0a04 100644 (file)
--- a/cpu.h
+++ b/cpu.h
 
 #include "nsjail.h"
 
-bool cpuInit(struct nsjconf_t* nsjconf);
+namespace cpu {
+
+bool initCpu(struct nsjconf_t* nsjconf);
+
+}  // namespace cpu
 
 #endif /* NS_CPU_H */