From ff282fb3851bafe75344cbc876fc89e3ab32f533 Mon Sep 17 00:00:00 2001 From: Robert Swiecki Date: Fri, 9 Feb 2018 17:41:16 +0100 Subject: [PATCH] cpu: move to C++ --- Makefile | 10 +++++----- contain.cc | 4 ++-- cpu.c => cpu.cc | 12 +++++++++--- cpu.h | 6 +++++- 4 files changed, 21 insertions(+), 11 deletions(-) rename cpu.c => cpu.cc (91%) diff --git a/Makefile b/Makefile index ffcad4f..2f30677 100644 --- 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 diff --git a/contain.cc b/contain.cc index e8642d7..6ea3bdb 100644 --- a/contain.cc +++ b/contain.cc @@ -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 --- a/cpu.c +++ b/cpu.cc @@ -27,10 +27,14 @@ #include #include +extern "C" { #include "log.h" #include "util.h" +} -static void cpuSetRandomCpu(cpu_set_t* mask, size_t mask_size, size_t cpu_num) { +namespace cpu { + +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 --- a/cpu.h +++ b/cpu.h @@ -26,6 +26,10 @@ #include "nsjail.h" -bool cpuInit(struct nsjconf_t* nsjconf); +namespace cpu { + +bool initCpu(struct nsjconf_t* nsjconf); + +} // namespace cpu #endif /* NS_CPU_H */