Update of /cvsroot/ltp/ltp/testcases/misc/selinux-testsuite/tests/task_getscheduler In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27130/tests/task_getscheduler Added Files: Makefile selinux_task_getscheduler.sh selinux_task_getscheduler_source.c selinux_task_getscheduler_target.c test Log Message: Initial release --- NEW FILE: test --- #!/usr/bin/perl use Test; BEGIN { plan tests => 2} $basedir = $0; $basedir =~ s|(.*)/[^/]*|$1|; # Start the target process. if ( ($pid = fork()) == 0 ) { exec "runcon -t test_getsched_target_t $basedir/target"; } sleep 1; # Give it a second to start # Verify that test_getsched_yes_t can get the scheduling. # SCHED_OTHER 0 priority must == 0 # SCHED_FIFO 1 priority 1..99 # SCHED_RR 2 priority 1..99 $result = system "runcon -t test_getsched_yes_t -- $basedir/source $pid 2>&1"; ok($result, 0); # Verify that test_getsched_no_t cannot get the scheduling. $result = system "runcon -t test_getsched_no_t -- $basedir/source $pid 2>&1"; ok($result, 256); # Kill the target kill KILL, $pid; exit; --- NEW FILE: selinux_task_getscheduler.sh --- #!/bin/sh setup() { LTPTMP="/tmp/selinux" export TCID="setup" export TST_COUNT=0 # Start the target process. runcon -t test_getsched_target_t selinux_task_getscheduler_target & PID=$! sleep 1 # Give it a second to start } test01() { TCID="test01" TST_COUNT=1 RC=0 # Verify that test_getsched_yes_t can get the scheduling. # SCHED_OTHER 0 priority must == 0 # SCHED_FIFO 1 priority 1..99 # SCHED_RR 2 priority 1..99 runcon -t test_getsched_yes_t -- selinux_task_getscheduler_source $PID 2>&1 RC=$? if [ $RC -eq 0 ] then echo "Test #1: task_getscheduler passed." else echo "Test #1: task_getscheduler failed." fi return $RC } test02() { TCID="test02" TST_COUNT=2 RC=0 # Verify that test_getsched_no_t cannot get the scheduling. runcon -t test_getsched_no_t -- selinux_task_getscheduler_source $PID 2>&1 RC=$? if [ $RC -ne 0 ] then echo "Test #2: task_getscheduler passed." return 0 else echo "Test #2: task_getscheduler failed." return 1 fi } cleanup() { # Kill the target kill -s KILL $PID } # Function: main # # Description: - Execute all tests, exit with test status. # # Exit: - zero on success # - non-zero on failure. # RC=0 # Return value from setup, and test functions. setup || exit $RC test01 || exit $RC test02 || exit $RC cleanup exit 0 --- NEW FILE: Makefile --- TARGETS=$(patsubst %.c,%,$(wildcard *.c)) all: $(TARGETS) install: @set -e; for i in $(TARGETS); do ln -f $$i ../../../../bin/$$i ; done ln -f selinux_task_getscheduler.sh ../../../../bin/ clean: rm -f $(TARGETS) --- NEW FILE: selinux_task_getscheduler_target.c --- int main(void) { while (1) { sleep(1); } } --- NEW FILE: selinux_task_getscheduler_source.c --- #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sched.h> int main(int argc, char *argv[]) { pid_t pid; int policy; if (argc != 2) { fprintf(stderr,"Usage: %s pid\n",argv[0]); exit(-1); } pid = (pid_t) atol(argv[1]); printf("pid = %d \n",pid); if ((policy = sched_getscheduler(pid)) < 0) { perror("sched_getscheduler"); exit(1); } printf("policy = %d\n",policy); exit(0); } |