diff --git a/arch/x86_64/kernel/include/arch-futex.h b/arch/x86_64/kernel/include/arch-futex.h index bf6146b0..d9974e03 100644 --- a/arch/x86_64/kernel/include/arch-futex.h +++ b/arch/x86_64/kernel/include/arch-futex.h @@ -64,7 +64,6 @@ static inline int futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, return oldval; } -#ifdef POSTK_DEBUG_ARCH_DEP_8 /* arch depend hide */ static inline int futex_atomic_op_inuser(int encoded_op, int __user *uaddr) { int op = (encoded_op >> 28) & 7; @@ -128,7 +127,6 @@ static inline int futex_atomic_op_inuser(int encoded_op, int __user *uaddr) } return ret; } -#endif /* !POSTK_DEBUG_ARCH_DEP_8 */ static inline int get_futex_value_locked(uint32_t *dest, uint32_t *from) { diff --git a/arch/x86_64/tools/mcstop+release-smp-x86.sh.in b/arch/x86_64/tools/mcstop+release-smp-x86.sh.in index 7396c794..09fd55c9 100644 --- a/arch/x86_64/tools/mcstop+release-smp-x86.sh.in +++ b/arch/x86_64/tools/mcstop+release-smp-x86.sh.in @@ -48,6 +48,9 @@ if ls /dev/mcos* 1>/dev/null 2>&1; then done fi +# Allow ihkmond to flush kmsg buffer +sleep 2.0 + # Query IHK-SMP resources and release them if ! ${SBINDIR}/ihkconfig 0 query cpu > /dev/null; then echo "error: querying cpus" >&2 @@ -62,17 +65,23 @@ if [ "${cpus}" != "" ]; then fi fi -if ! ${SBINDIR}/ihkconfig 0 query mem > /dev/null; then - echo "error: querying memory" >&2 - exit 1 -fi +#if ! ${SBINDIR}/ihkconfig 0 query mem > /dev/null; then +# echo "error: querying memory" >&2 +# exit 1 +#fi +# +#mem=`${SBINDIR}/ihkconfig 0 query mem` +#if [ "${mem}" != "" ]; then +# if ! ${SBINDIR}/ihkconfig 0 release mem $mem > /dev/null; then +# echo "error: releasing memory" >&2 +# exit 1 +# fi +#fi -mem=`${SBINDIR}/ihkconfig 0 query mem` -if [ "${mem}" != "" ]; then - if ! ${SBINDIR}/ihkconfig 0 release mem $mem > /dev/null; then - echo "error: releasing memory" >&2 - exit 1 - fi +# Release all memory +if ! ${SBINDIR}/ihkconfig 0 release mem "all" > /dev/null; then + echo "error: releasing memory" >&2 + exit 1 fi # Remove delegator if loaded diff --git a/executer/kernel/mcctrl/Makefile.in b/executer/kernel/mcctrl/Makefile.in index 34bceb05..e305497f 100644 --- a/executer/kernel/mcctrl/Makefile.in +++ b/executer/kernel/mcctrl/Makefile.in @@ -9,7 +9,6 @@ IHK_BASE=$(src)/../../../../ihk obj-m += mcctrl.o -# POSTK_DEBUG_ARCH_DEP_1, arch depend "-mcmodel" # POSTK_DEBUG_ARCH_DEP_83, arch depend translate_rva_to_rpa() move ccflags-y := -I$(IHK_BASE)/linux/include \ -I$(IHK_BASE)/linux/include/ihk/arch/$(ARCH) \ @@ -24,9 +23,8 @@ ccflags-y := -I$(IHK_BASE)/linux/include \ -I$(src)/../../../kernel/include \ -DMCEXEC_PATH=\"$(BINDIR)/mcexec\" -ifneq ($(ARCH), arm64) -ccflags-y += -mno-red-zone -mcmodel=kernel -endif +# depending arch +include @abs_builddir@/arch/$(ARCH)/Makefile mcctrl-y := driver.o control.o ikc.o syscall.o procfs.o binfmt_mcexec.o mcctrl-y += sysfs.o sysfs_files.o arch/$(ARCH)/archdeps.o diff --git a/executer/kernel/mcctrl/arch/x86_64/Makefile.in b/executer/kernel/mcctrl/arch/x86_64/Makefile.in index fe9c2dc0..4d888df4 100644 --- a/executer/kernel/mcctrl/arch/x86_64/Makefile.in +++ b/executer/kernel/mcctrl/arch/x86_64/Makefile.in @@ -1 +1 @@ -# dummy file +ccflags-y += -mno-red-zone -mcmodel=kernel diff --git a/executer/kernel/mcctrl/control.c b/executer/kernel/mcctrl/control.c index ec8f48d6..7bec208e 100644 --- a/executer/kernel/mcctrl/control.c +++ b/executer/kernel/mcctrl/control.c @@ -632,6 +632,7 @@ static long mcexec_get_cpuset(ihk_os_t os, unsigned long arg) pli->task = current; pli->ready = 0; + pli->timeout = 0; init_waitqueue_head(&pli->pli_wq); pli_next = NULL; @@ -693,11 +694,50 @@ static long mcexec_get_cpuset(ihk_os_t os, unsigned long arg) dprintk("%s: pid: %d, waiting in list\n", __FUNCTION__, task_tgid_vnr(current)); mutex_unlock(&pe->lock); - ret = wait_event_interruptible(pli->pli_wq, pli->ready); + /* Timeout period: 10 secs + (#procs * 0.1sec) */ + ret = wait_event_interruptible_timeout(pli->pli_wq, + pli->ready, + msecs_to_jiffies(10000 + req.nr_processes * 100)); mutex_lock(&pe->lock); - if (ret != 0) { + + /* First timeout task? Wake up everyone else, + * but tell them we timed out */ + if (ret == 0) { + printk("%s: error: pid: %d, timed out, waking everyone\n", + __FUNCTION__, task_tgid_vnr(current)); + while (!list_empty(&pe->pli_list)) { + pli_next = list_first_entry(&pe->pli_list, + struct process_list_item, list); + list_del(&pli_next->list); + pli_next->ready = 1; + pli_next->timeout = 1; + wake_up_interruptible(&pli_next->pli_wq); + } + + /* Reset process counter to start state */ + pe->nr_processes = -1; + ret = -ETIMEDOUT; goto put_and_unlock_out; } + + /* Interrupted or woken up by someone else due to time out? */ + if (ret < 0 || pli->timeout) { + if (ret > 0) { + printk("%s: error: pid: %d, job startup timed out\n", + __FUNCTION__, task_tgid_vnr(current)); + ret = -ETIMEDOUT; + } + goto put_and_unlock_out; + } + + /* Incorrect wakeup state? */ + if (!pli->ready) { + printk("%s: error: pid: %d, not ready but woken?\n", + __FUNCTION__, task_tgid_vnr(current)); + ret = -EINVAL; + goto put_and_unlock_out; + } + dprintk("%s: pid: %d, woken up\n", __FUNCTION__, task_tgid_vnr(current)); } diff --git a/executer/kernel/mcctrl/mcctrl.h b/executer/kernel/mcctrl/mcctrl.h index 1ef809f2..e2724562 100644 --- a/executer/kernel/mcctrl/mcctrl.h +++ b/executer/kernel/mcctrl/mcctrl.h @@ -304,6 +304,7 @@ struct node_topology { struct process_list_item { int ready; + int timeout; struct task_struct *task; struct list_head list; wait_queue_head_t pli_wq; diff --git a/kernel/include/futex.h b/kernel/include/futex.h index 00ab92f9..cf0b9f3f 100644 --- a/kernel/include/futex.h +++ b/kernel/include/futex.h @@ -117,78 +117,9 @@ #include #endif -#ifdef POSTK_DEBUG_ARCH_DEP_8 /* arch depend hide */ -#else -static inline int futex_atomic_op_inuser(int encoded_op, int __user *uaddr) -{ - int op = (encoded_op >> 28) & 7; - int cmp = (encoded_op >> 24) & 15; - int oparg = (encoded_op << 8) >> 20; - int cmparg = (encoded_op << 20) >> 20; - int oldval = 0, ret, tem; - - if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28)) - oparg = 1 << oparg; - -#ifdef __UACCESS__ - if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int))) - return -EFAULT; -#endif - - switch (op) { - case FUTEX_OP_SET: - __futex_atomic_op1("xchgl %0, %2", ret, oldval, uaddr, oparg); - break; - case FUTEX_OP_ADD: - __futex_atomic_op1("lock; xaddl %0, %2", ret, oldval, - uaddr, oparg); - break; - case FUTEX_OP_OR: - __futex_atomic_op2("orl %4, %3", ret, oldval, uaddr, oparg); - break; - case FUTEX_OP_ANDN: - __futex_atomic_op2("andl %4, %3", ret, oldval, uaddr, ~oparg); - break; - case FUTEX_OP_XOR: - __futex_atomic_op2("xorl %4, %3", ret, oldval, uaddr, oparg); - break; - default: - ret = -ENOSYS; - } - - if (!ret) { - switch (cmp) { - case FUTEX_OP_CMP_EQ: - ret = (oldval == cmparg); - break; - case FUTEX_OP_CMP_NE: - ret = (oldval != cmparg); - break; - case FUTEX_OP_CMP_LT: - ret = (oldval < cmparg); - break; - case FUTEX_OP_CMP_GE: - ret = (oldval >= cmparg); - break; - case FUTEX_OP_CMP_LE: - ret = (oldval <= cmparg); - break; - case FUTEX_OP_CMP_GT: - ret = (oldval > cmparg); - break; - default: - ret = -ENOSYS; - } - } - return ret; -} - -#endif /* arch depend hide */ #endif // __KERNEL__ #endif // _ASM_X86_FUTEX_H - - #define FUTEX_HASHBITS 8 /* 256 entries in each futex hash tbl */ #define FUT_OFF_INODE 1 /* We set bit 0 if key has a reference on inode */ diff --git a/kernel/process.c b/kernel/process.c index c0e9db51..78e5c17a 100644 --- a/kernel/process.c +++ b/kernel/process.c @@ -1466,14 +1466,6 @@ static int remap_one_page(void *arg0, page_table_t pt, pte_t *ptep, dkprintf("remap_one_page(%p,%p,%p %#lx,%p,%d)\n", arg0, pt, ptep, *ptep, pgaddr, pgshift); - /* XXX: NYI: large pages */ - if (pgsize != PAGE_SIZE) { - error = -E2BIG; - ekprintf("remap_one_page(%p,%p,%p %#lx,%p,%d):%d\n", - arg0, pt, ptep, *ptep, pgaddr, pgshift, error); - goto out; - } - off = args->off + ((uintptr_t)pgaddr - args->start); pte_make_fileoff(off, 0, pgsize, &apte); @@ -1509,6 +1501,7 @@ int remap_process_memory_range(struct process_vm *vm, struct vm_range *range, { struct rfp_args args; int error; + unsigned int retval; dkprintf("remap_process_memory_range(%p,%p,%#lx,%#lx,%#lx)\n", vm, range, start, end, off); @@ -1519,6 +1512,13 @@ int remap_process_memory_range(struct process_vm *vm, struct vm_range *range, args.off = off; args.memobj = range->memobj; + retval = __sync_val_compare_and_swap(&range->pgshift, 0, PAGE_SHIFT); + if (retval != 0 && retval != PAGE_SHIFT) { + error = -E2BIG; + ekprintf("%s: pgshift is too big (%d) failed:%d\n", __func__, retval, error); + goto out; + } + error = visit_pte_range(vm->address_space->page_table, (void *)start, (void *)end, range->pgshift, VPTEF_DEFAULT, &remap_one_page, &args); diff --git a/test/proc_sys_checker/file_format_check.pl b/test/proc_sys_checker/file_format_check.pl new file mode 100755 index 00000000..3faa1db1 --- /dev/null +++ b/test/proc_sys_checker/file_format_check.pl @@ -0,0 +1,164 @@ +#!/usr/bin/perl + +use utf8; +use Encode qw/encode decode/; + +sub count_occurence { + my $err_num = 0; + my $fn = shift(); + my @pattern = @_; + my $lineno = 0; + + if (open(DATAFILE, "< $fn")) { + while (my $line = ) { + my $check = 0; + chomp $line; + for (my $i = 0; $i <= $#pattern; $i++) { + if ($line =~ /$pattern[$i]/) { + $freq[$filecnt][$i]++; + $check = 1; + if ($loc[$i][$blockno] == 1) { + $blockno++; + } + $loc[$i][$blockno] = 1; + last; + } + } + $lineno++; + if ($check == 0) { + $no_match[$err_num] = $lineno; + $err_num++; + } + } + } else { + return -1; + } + return $err_num; +} + +if (@ARGV != 1) { + print "Usage: file_format_check.pl filename\n"; + exit(1); +} + +my @pattern1 = (); +my @pattern2 = (); +my $n = 1; +my $checkflg = 0; + +open(DATAFILE, "< $ARGV[0]") or die("Error:$!"); + +while (my $line = ) { + chomp $line; + if ($n == 1) { + $checkfilepath = $line; + } elsif ($n == 2) { + $checkmode = $line; + } elsif ($checkflg == 1) { + push @pattern2, $line; + } elsif ($line =~ /^$/) { + $checkflg = 1; + } else { + push @pattern1, $line; + push @pattern_check, 0; + } + $n++; +} + +my $fname = ""; +my $fnameflg = 0; +my $rtn_code = 0; +my $total_errcnt = 0; +my $my_tid = $$; +my $tmp_cmdls = "ls $checkfilepath"; +my $cmdls = "ls $checkfilepath"; +$cmdls =~ s/#pid#/$my_tid/g; + +if ($tmp_cmdls eq $cmdls) { + $fnameflg = 1; +} +if ($checkmode < 1 || $checkmode > 3) { + $checkmode = 1; +} + +my $cmdexec = `$cmdls`; +my @list = split(/\n/, $cmdexec); + +$filecnt = 0; +foreach my $parts(@list) { + $errcnt = 0; + $freq = (); + $loc = (); + $no_match = (); + $blockno = 0; + + # パターン検証サブルーチンコール + my $rtn_code = &count_occurence($parts, @pattern1, @pattern2); + + if ($rtn_code == -1) { + $err_msg = "$err_msg Err(ファイルが存在しませんでした)\n"; + $errcnt = 1; + } else { + for (my $i = 0; $i <= $#no_match; $i++) { + $err_msg = "$err_msg Err(対象ファイルの$no_match[$i]行目がどのパターンにも合致しませんでした)\n"; + $errcnt++; + } + # pattern1 + if ($checkmode == 1) { + for (my $i = 0; $i <= $#pattern1; $i++) { + if ($freq[$filecnt][$i] == 0) { + $err_msg = "$err_msg Err(チェックパターン($pattern1[$i])に一致する行が存在しませんでした)\n"; + $errcnt++; + } elsif ($freq[$filecnt][$i] > 1) { + $err_msg = "$err_msg Err(チェックパターン($pattern1[$i])に一致する行が複数回存在しました)\n"; + $errcnt++; + } + } + # pattern2 + } elsif ($checkmode == 2) { + for (my $i = 0; $i <= $#pattern1; $i++) { + if ($freq[$filecnt][$i] == 0) { + $err_msg = "$err_msg Err(チェックパターン($pattern1[$i])に一致する行が存在しませんでした)\n"; + $errcnt++; + } + } + # pattern3 + } elsif ($checkmode == 3) { + $count = $freq[$filecnt][0]; + for (my $i = 0; $i <= $#pattern1; $i++) { + if ($freq[$filecnt][$i] == 0) { + $err_msg = "$err_msg Err(全ブロックでチェックパターン($pattern1[$i])が存在しませんでした)\n"; + $errcnt++; + } elsif ($freq[$filecnt][$i] != $count) { + for (my $j = 0; $j <= $blockno; $j++) { + if ($loc[$i][$j] != 1) { + $bno = $j + 1; + $err_msg = "$err_msg Err(${bno}ブロック目でチェックパターン($pattern1[$i])に一致する行が存在しませんでした)\n"; + $errcnt++; + } + } + } + } + } + } + if ($fnameflg == 0) { + $fname = $checkfilepath; + } else { + $fname = $parts; + } + if ($errcnt == 0) { + print "[OK] $fname\n"; + } else { + print "[NG] $fname\n"; + $err_msg = encode('UTF-8', $err_msg); + print "$err_msg"; + system("cat $parts > NG_`basename $ARGV[0]`"); + } + $total_errcnt = $total_errcnt + $errcnt; + $filecnt++; +} +if ($total_errcnt == 0) { + exit(0); +} else { + exit($total_errcnt); +} diff --git a/test/proc_sys_checker/file_format_check.sh b/test/proc_sys_checker/file_format_check.sh new file mode 100755 index 00000000..0d7b5c5f --- /dev/null +++ b/test/proc_sys_checker/file_format_check.sh @@ -0,0 +1,14 @@ +#!/bin/sh +#file_format_check.sh + +filename="./input" + +if [ "x$1" != "x" ]; then + filename=$1 +fi + +cat /dev/null > outfile +cat ${filename} | while read line +do + ./file_format_check.pl $line >> outfile +done diff --git a/test/proc_sys_checker/input b/test/proc_sys_checker/input new file mode 100644 index 00000000..50228154 --- /dev/null +++ b/test/proc_sys_checker/input @@ -0,0 +1,35 @@ +./proc/proc_stat +./proc/proc_pid_cgroup +./proc/proc_pid_cmdline +./proc/proc_pid_cpuset +./proc/proc_pid_maps +./proc/proc_pid_smaps +./proc/proc_pid_stat +./proc/proc_pid_status +./proc/proc_pid_task_thid_stat +./sys/cpu_offline +./sys/cpu_online +./sys/cpu_possible +./sys/cpu_present +./sys/cpu_cpu_online +./sys/cpu_cpu_cache_index_level +./sys/cpu_cpu_cache_index_type +./sys/cpu_cpu_cache_index_size +./sys/cpu_cpu_cache_index_coherency_line_size +./sys/cpu_cpu_cache_index_number_of_sets +./sys/cpu_cpu_cache_index_physical_line_partition +./sys/cpu_cpu_cache_index_ways_of_associativity +./sys/cpu_cpu_cache_index_shared_cpu_map +./sys/cpu_cpu_cache_index_shared_cpu_list +./sys/cpu_cpu_topology_physical_package_id +./sys/cpu_cpu_topology_core_id +./sys/cpu_cpu_topology_core_siblings +./sys/cpu_cpu_topology_core_siblings_list +./sys/cpu_cpu_topology_thread_siblings +./sys/cpu_cpu_topology_thread_siblings_list +./sys/node_online +./sys/node_possible +./sys/node_node_distance +./sys/node_node_cpumap +./sys/pci_local_cpus +./sys/pci_local_cpulist diff --git a/test/proc_sys_checker/proc/proc_pid_cgroup b/test/proc_sys_checker/proc/proc_pid_cgroup new file mode 100644 index 00000000..09dde865 --- /dev/null +++ b/test/proc_sys_checker/proc/proc_pid_cgroup @@ -0,0 +1,4 @@ +/proc/#pid#/cgroup +1 + +^[\d]+[:][\w=,]+[:][/\w\-.@]+ diff --git a/test/proc_sys_checker/proc/proc_pid_cmdline b/test/proc_sys_checker/proc/proc_pid_cmdline new file mode 100644 index 00000000..1a906d18 --- /dev/null +++ b/test/proc_sys_checker/proc/proc_pid_cmdline @@ -0,0 +1,3 @@ +/proc/#pid#/cmdline +1 +^[\s\w/\-\(\).=:\[\]@]+ diff --git a/test/proc_sys_checker/proc/proc_pid_cpuset b/test/proc_sys_checker/proc/proc_pid_cpuset new file mode 100644 index 00000000..d1a4a65e --- /dev/null +++ b/test/proc_sys_checker/proc/proc_pid_cpuset @@ -0,0 +1,4 @@ +/proc/#pid#/cpuset +1 + +^[/][\w/\-]* diff --git a/test/proc_sys_checker/proc/proc_pid_maps b/test/proc_sys_checker/proc/proc_pid_maps new file mode 100644 index 00000000..4370fa1a --- /dev/null +++ b/test/proc_sys_checker/proc/proc_pid_maps @@ -0,0 +1,3 @@ +/proc/#pid#/maps +2 +^[\da-f]+[\-][\da-f]+\s[rwxsp\-]{4}\s[\da-f]+\s[\d]{2}[:][\d]{2}\s[\d]+([\s]+\[heap\]|[\s]+\[vdso\]|[\s]+\[stack\]|[\s]+\[stack:[\d]+\]|[\s]+\[vsyscall\]|[\s]+/[\w/\-.]+|\s) diff --git a/test/proc_sys_checker/proc/proc_pid_smaps b/test/proc_sys_checker/proc/proc_pid_smaps new file mode 100644 index 00000000..a1227bab --- /dev/null +++ b/test/proc_sys_checker/proc/proc_pid_smaps @@ -0,0 +1,20 @@ +/proc/#pid#/smaps +3 +^[\da-f]+[\-][\da-f]+\s[rwxsp\-]{4}\s[\da-f]+\s[\d]{2}[:][\d]{2}\s[\d]+([\s]+\[heap\]|[\s]+\[vdso\]|[\s]+\[stack\]|[\s]+\[stack:[\d]+\]|[\s]+\[vsyscall\]|[\s]+/[\w/\-.]+|\s) +^Size:[\s]+[\d]+\skB +^Rss:[\s]+[\d]+\skB +^Pss:[\s]+[\d]+\skB +^Shared_Clean:[\s]+[\d]+\skB +^Shared_Dirty:[\s]+[\d]+\skB +^Private_Clean:[\s]+[\d]+\skB +^Private_Dirty:[\s]+[\d]+\skB +^Referenced:[\s]+[\d]+\skB +^Anonymous:[\s]+[\d]+\skB +^AnonHugePages:[\s]+[\d]+\skB +^Swap:[\s]+[\d]+\skB +^KernelPageSize:[\s]+[\d]+\skB +^MMUPageSize:[\s]+[\d]+\skB +^Locked:[\s]+[\d]+\skB +^VmFlags:[\s]+([\l]{2}\s)* + +^Nonlinear:[\s]+[\d]+\skB diff --git a/test/proc_sys_checker/proc/proc_pid_stat b/test/proc_sys_checker/proc/proc_pid_stat new file mode 100644 index 00000000..7149777c --- /dev/null +++ b/test/proc_sys_checker/proc/proc_pid_stat @@ -0,0 +1,3 @@ +/proc/#pid#/stat +1 +^[\d]+\s\([\w/\-.:]+\)\s[R|S|D|T|t|X|Z]\s[\-]*[\d]+\s[\-]*[\d]+\s[\-]*[\d]+\s[\-]*[\d]+\s[\-]*[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\-]*[\d]+\s[\-]*[\d]+\s[\-]*[\d]+\s[\-]*[\d]+\s[\-]*[\d]+\s[\-]*[\d]+\s[\d]+\s[\d]+\s[\-]*[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\-]*[\d]+\s[\-]*[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\-]*[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\-]*[\d]+ diff --git a/test/proc_sys_checker/proc/proc_pid_status b/test/proc_sys_checker/proc/proc_pid_status new file mode 100644 index 00000000..09a331b2 --- /dev/null +++ b/test/proc_sys_checker/proc/proc_pid_status @@ -0,0 +1,44 @@ +/proc/#pid#/status +1 +^Name:\t[\w]+ +^State:\t(R \(running\)|S \(sleeping\)|D \(disk sleep\)|T \(stopped\)|t \(tracing stop\)|X \(dead\)|Z \(zombie\)) +^Tgid:\t[\d]+ +^Ngid:\t[\d]+ +^Pid:\t[\d]+ +^PPid:\t[\d]+ +^TracerPid:\t[\d]+ +^Uid:\t[\d]+\t[\d]+\t[\d]+\t[\d]+ +^Gid:\t[\d]+\t[\d]+\t[\d]+\t[\d]+ +^FDSize:\t[0-9]+ +^Groups:\t(([\d]+)(\s))* +^VmPeak:[\s]+[\d]{1,8}\skB +^VmSize:[\s]+[\d]{1,8}\skB +^VmLck:[\s]+[\d]{1,8}\skB +^VmPin:[\s]+[\d]{1,8}\skB +^VmHWM:[\s]+[\d]{1,8}\skB +^VmRSS:[\s]+[\d]{1,8}\skB +^VmData:[\s]+[\d]{1,8}\skB +^VmStk:[\s]+[\d]{1,8}\skB +^VmExe:[\s]+[\d]{1,8}\skB +^VmLib:[\s]+[\d]{1,8}\skB +^VmPTE:[\s]+[\d]{1,8}\skB +^VmSwap:[\s]+[\d]{1,8}\skB +^Threads:\t[\d]+ +^SigQ:\t[\d]+/[\d]+ +^SigPnd:\t[\da-f]+ +^ShdPnd:\t[\da-f]+ +^SigBlk:\t[\da-f]+ +^SigIgn:\t[\da-f]+ +^SigCgt:\t[\da-f]+ +^CapInh:\t[\da-f]+ +^CapPrm:\t[\da-f]+ +^CapEff:\t[\da-f]+ +^CapBnd:\t[\da-f]+ +^Cpus_allowed:\t[\da-f,]+ +^Cpus_allowed_list:\t[\d,\-]+ +^Mems_allowed:\t[\da-f,]+ +^Mems_allowed_list:\t[\d,\-]+ +^voluntary_ctxt_switches:\t[\d]+ +^nonvoluntary_ctxt_switches:\t[\d]+ + +^Seccomp:[\s]+[\d]+ diff --git a/test/proc_sys_checker/proc/proc_pid_task_thid_stat b/test/proc_sys_checker/proc/proc_pid_task_thid_stat new file mode 100644 index 00000000..fd59f47b --- /dev/null +++ b/test/proc_sys_checker/proc/proc_pid_task_thid_stat @@ -0,0 +1,3 @@ +/proc/#pid#/task/#pid#/stat +1 +^[\d]+\s\([\w]+\)\s[R|S|D|T|t|X|Z]\s[\-]*[\d]+\s[\-]*[\d]+\s[\-]*[\d]+\s[\-]*[\d]+\s[\-]*[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\-]*[\d]+\s[\-]*[\d]+\s[\-]*[\d]+\s[\-]*[\d]+\s[\-]*[\d]+\s[\-]*[\d]+\s[\d]+\s[\d]+\s[\-]*[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\-]*[\d]+\s[\-]*[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\-]*[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\d]+\s[\-]*[\d]+ diff --git a/test/proc_sys_checker/proc/proc_stat b/test/proc_sys_checker/proc/proc_stat new file mode 100644 index 00000000..212eb03c --- /dev/null +++ b/test/proc_sys_checker/proc/proc_stat @@ -0,0 +1,12 @@ +/proc/stat +1 +^cpu\s((\s)([\d]+)){10} +^intr((\s)([\d]+))+ +^ctxt\s[\d]+ +^btime\s[\d]+ +^processes\s[\d]+ +^procs_running\s[\d]+ +^procs_blocked\s[\d]+ +^softirq((\s)([\d]+)){11} + +^cpu[\d]+((\s)([\d]+)){10} diff --git a/test/proc_sys_checker/sys/cpu_cpu_cache_index_coherency_line_size b/test/proc_sys_checker/sys/cpu_cpu_cache_index_coherency_line_size new file mode 100644 index 00000000..75b8e9dd --- /dev/null +++ b/test/proc_sys_checker/sys/cpu_cpu_cache_index_coherency_line_size @@ -0,0 +1,3 @@ +/sys/devices/system/cpu/cpu0/cache/index[0-1]/coherency_line_size +1 +^[\d]+ diff --git a/test/proc_sys_checker/sys/cpu_cpu_cache_index_level b/test/proc_sys_checker/sys/cpu_cpu_cache_index_level new file mode 100644 index 00000000..071f647c --- /dev/null +++ b/test/proc_sys_checker/sys/cpu_cpu_cache_index_level @@ -0,0 +1,3 @@ +/sys/devices/system/cpu/cpu0/cache/index[0-1]/level +1 +^[\d]+ diff --git a/test/proc_sys_checker/sys/cpu_cpu_cache_index_number_of_sets b/test/proc_sys_checker/sys/cpu_cpu_cache_index_number_of_sets new file mode 100644 index 00000000..0a9d8c0c --- /dev/null +++ b/test/proc_sys_checker/sys/cpu_cpu_cache_index_number_of_sets @@ -0,0 +1,3 @@ +/sys/devices/system/cpu/cpu0/cache/index[0-1]/number_of_sets +1 +^[\d]+ diff --git a/test/proc_sys_checker/sys/cpu_cpu_cache_index_physical_line_partition b/test/proc_sys_checker/sys/cpu_cpu_cache_index_physical_line_partition new file mode 100644 index 00000000..cb7d8014 --- /dev/null +++ b/test/proc_sys_checker/sys/cpu_cpu_cache_index_physical_line_partition @@ -0,0 +1,3 @@ +/sys/devices/system/cpu/cpu0/cache/index[0-1]/physical_line_partition +1 +^[\d]+ diff --git a/test/proc_sys_checker/sys/cpu_cpu_cache_index_shared_cpu_list b/test/proc_sys_checker/sys/cpu_cpu_cache_index_shared_cpu_list new file mode 100644 index 00000000..e5cdf947 --- /dev/null +++ b/test/proc_sys_checker/sys/cpu_cpu_cache_index_shared_cpu_list @@ -0,0 +1,3 @@ +/sys/devices/system/cpu/cpu0/cache/index[0-1]/shared_cpu_list +1 +^[\d,\-]+ diff --git a/test/proc_sys_checker/sys/cpu_cpu_cache_index_shared_cpu_map b/test/proc_sys_checker/sys/cpu_cpu_cache_index_shared_cpu_map new file mode 100644 index 00000000..9dc0dbc7 --- /dev/null +++ b/test/proc_sys_checker/sys/cpu_cpu_cache_index_shared_cpu_map @@ -0,0 +1,3 @@ +/sys/devices/system/cpu/cpu0/cache/index[0-1]/shared_cpu_map +1 +^[\da-f,]+ diff --git a/test/proc_sys_checker/sys/cpu_cpu_cache_index_size b/test/proc_sys_checker/sys/cpu_cpu_cache_index_size new file mode 100644 index 00000000..aed81de8 --- /dev/null +++ b/test/proc_sys_checker/sys/cpu_cpu_cache_index_size @@ -0,0 +1,3 @@ +/sys/devices/system/cpu/cpu0/cache/index[0-1]/size +1 +^[\d]+K diff --git a/test/proc_sys_checker/sys/cpu_cpu_cache_index_type b/test/proc_sys_checker/sys/cpu_cpu_cache_index_type new file mode 100644 index 00000000..cd904ab4 --- /dev/null +++ b/test/proc_sys_checker/sys/cpu_cpu_cache_index_type @@ -0,0 +1,3 @@ +/sys/devices/system/cpu/cpu0/cache/index[0-1]/type +1 +^(Instruction|Data|Unified|Unknown) diff --git a/test/proc_sys_checker/sys/cpu_cpu_cache_index_ways_of_associativity b/test/proc_sys_checker/sys/cpu_cpu_cache_index_ways_of_associativity new file mode 100644 index 00000000..26b330e3 --- /dev/null +++ b/test/proc_sys_checker/sys/cpu_cpu_cache_index_ways_of_associativity @@ -0,0 +1,3 @@ +/sys/devices/system/cpu/cpu0/cache/index[0-1]/ways_of_associativity +1 +^[\d]+ diff --git a/test/proc_sys_checker/sys/cpu_cpu_online b/test/proc_sys_checker/sys/cpu_cpu_online new file mode 100644 index 00000000..536e9b4c --- /dev/null +++ b/test/proc_sys_checker/sys/cpu_cpu_online @@ -0,0 +1,3 @@ +/sys/devices/system/cpu/cpu1/online +1 +^[0-1] diff --git a/test/proc_sys_checker/sys/cpu_cpu_topology_core_id b/test/proc_sys_checker/sys/cpu_cpu_topology_core_id new file mode 100644 index 00000000..d4a93acb --- /dev/null +++ b/test/proc_sys_checker/sys/cpu_cpu_topology_core_id @@ -0,0 +1,3 @@ +/sys/devices/system/cpu/cpu0/topology/core_id +1 +^[\d]+ diff --git a/test/proc_sys_checker/sys/cpu_cpu_topology_core_siblings b/test/proc_sys_checker/sys/cpu_cpu_topology_core_siblings new file mode 100644 index 00000000..65b6ceb9 --- /dev/null +++ b/test/proc_sys_checker/sys/cpu_cpu_topology_core_siblings @@ -0,0 +1,3 @@ +/sys/devices/system/cpu/cpu0/topology/core_siblings +1 +^[\da-f,]+ diff --git a/test/proc_sys_checker/sys/cpu_cpu_topology_core_siblings_list b/test/proc_sys_checker/sys/cpu_cpu_topology_core_siblings_list new file mode 100644 index 00000000..219e8448 --- /dev/null +++ b/test/proc_sys_checker/sys/cpu_cpu_topology_core_siblings_list @@ -0,0 +1,3 @@ +/sys/devices/system/cpu/cpu0/topology/core_siblings_list +1 +^[\d,\-]+ diff --git a/test/proc_sys_checker/sys/cpu_cpu_topology_physical_package_id b/test/proc_sys_checker/sys/cpu_cpu_topology_physical_package_id new file mode 100644 index 00000000..6ca56247 --- /dev/null +++ b/test/proc_sys_checker/sys/cpu_cpu_topology_physical_package_id @@ -0,0 +1,3 @@ +/sys/devices/system/cpu/cpu0/topology/physical_package_id +1 +^[\d]+ diff --git a/test/proc_sys_checker/sys/cpu_cpu_topology_thread_siblings b/test/proc_sys_checker/sys/cpu_cpu_topology_thread_siblings new file mode 100644 index 00000000..db9efd88 --- /dev/null +++ b/test/proc_sys_checker/sys/cpu_cpu_topology_thread_siblings @@ -0,0 +1,3 @@ +/sys/devices/system/cpu/cpu0/topology/thread_siblings +1 +^[\da-f,]+ diff --git a/test/proc_sys_checker/sys/cpu_cpu_topology_thread_siblings_list b/test/proc_sys_checker/sys/cpu_cpu_topology_thread_siblings_list new file mode 100644 index 00000000..aec57c2f --- /dev/null +++ b/test/proc_sys_checker/sys/cpu_cpu_topology_thread_siblings_list @@ -0,0 +1,3 @@ +/sys/devices/system/cpu/cpu0/topology/thread_siblings_list +1 +^[\d,\-]+ diff --git a/test/proc_sys_checker/sys/cpu_offline b/test/proc_sys_checker/sys/cpu_offline new file mode 100644 index 00000000..a73fa766 --- /dev/null +++ b/test/proc_sys_checker/sys/cpu_offline @@ -0,0 +1,3 @@ +/sys/devices/system/cpu/offline +2 +^[\d,\-]* diff --git a/test/proc_sys_checker/sys/cpu_online b/test/proc_sys_checker/sys/cpu_online new file mode 100644 index 00000000..5a3313ae --- /dev/null +++ b/test/proc_sys_checker/sys/cpu_online @@ -0,0 +1,3 @@ +/sys/devices/system/cpu/online +1 +^[\d,\-]+ diff --git a/test/proc_sys_checker/sys/cpu_possible b/test/proc_sys_checker/sys/cpu_possible new file mode 100644 index 00000000..69aac483 --- /dev/null +++ b/test/proc_sys_checker/sys/cpu_possible @@ -0,0 +1,3 @@ +/sys/devices/system/cpu/possible +1 +^[\d,\-]+ diff --git a/test/proc_sys_checker/sys/cpu_present b/test/proc_sys_checker/sys/cpu_present new file mode 100644 index 00000000..1d430bf1 --- /dev/null +++ b/test/proc_sys_checker/sys/cpu_present @@ -0,0 +1,3 @@ +/sys/devices/system/cpu/present +1 +^[\d,\-]+ diff --git a/test/proc_sys_checker/sys/node_node_cpumap b/test/proc_sys_checker/sys/node_node_cpumap new file mode 100644 index 00000000..b5f7d3b4 --- /dev/null +++ b/test/proc_sys_checker/sys/node_node_cpumap @@ -0,0 +1,3 @@ +/sys/devices/system/node/node0/cpumap +1 +^[\d,\-]+ diff --git a/test/proc_sys_checker/sys/node_node_distance b/test/proc_sys_checker/sys/node_node_distance new file mode 100644 index 00000000..8386b8b2 --- /dev/null +++ b/test/proc_sys_checker/sys/node_node_distance @@ -0,0 +1,3 @@ +/sys/devices/system/node/node0/distance +1 +^[\d\s]+ diff --git a/test/proc_sys_checker/sys/node_online b/test/proc_sys_checker/sys/node_online new file mode 100644 index 00000000..c736b4df --- /dev/null +++ b/test/proc_sys_checker/sys/node_online @@ -0,0 +1,3 @@ +/sys/devices/system/node/online +1 +^[\d,\-]+ diff --git a/test/proc_sys_checker/sys/node_possible b/test/proc_sys_checker/sys/node_possible new file mode 100644 index 00000000..7966fdff --- /dev/null +++ b/test/proc_sys_checker/sys/node_possible @@ -0,0 +1,3 @@ +/sys/devices/system/node/possible +1 +^[\d,\-]+ diff --git a/test/proc_sys_checker/sys/pci_local_cpulist b/test/proc_sys_checker/sys/pci_local_cpulist new file mode 100644 index 00000000..9efca4b3 --- /dev/null +++ b/test/proc_sys_checker/sys/pci_local_cpulist @@ -0,0 +1,3 @@ +/sys/devices/pci0000:00/0000:00:00.0/local_cpulist +1 +^[\d,\-]+ diff --git a/test/proc_sys_checker/sys/pci_local_cpus b/test/proc_sys_checker/sys/pci_local_cpus new file mode 100644 index 00000000..0241ab61 --- /dev/null +++ b/test/proc_sys_checker/sys/pci_local_cpus @@ -0,0 +1,3 @@ +/sys/devices/pci0000:00/0000:00:00.0/local_cpus +1 +^[\da-f,]+