1 /******************************************************************************/
2 /* */
3 /* Copyright (c) International Business Machines Corp., 2008 */
4 /* */
5 /* This program is free software; you can redistribute it and/or modify */
6 /* it under the terms of the GNU General Public License as published by */
7 /* the Free Software Foundation; either version 2 of the License, or */
8 /* (at your option) any later version. */
9 /* */
10 /* This program is distributed in the hope that it will be useful, */
11 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
12 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See */
13 /* the GNU General Public License for more details. */
14 /* */
15 /* You should have received a copy of the GNU General Public License */
16 /* along with this program; if not, write to the Free Software */
17 /* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */
18 /* */
19 /******************************************************************************/
20
21 /******************************************************************************/
22 /* */
23 /* File: cpuctl_latency_test.c */
24 /* */
25 /* Description: This is a c program that runs a task which tries to keep cpu */
26 /* busy in doing some calculations. The task will be used to */
27 /* check the latency under group scheduling. */
28 /* The file is to be used by script */
29 /* */
30 /* Total Tests: 2 */
31 /* */
32 /* Test Name: cpu_controller_latency_tests */
33 /* */
34 /* Test Assertion */
35 /* Please refer to the file cpuctl_testplan.txt */
36 /* */
37 /* Author: Sudhir Kumar skumar@linux.vnet.ibm.com */
38 /* */
39 /* History: */
40 /* Created- 26/11/2008 -Sudhir Kumar <skumar@linux.vnet.ibm.com> */
41 /* */
42 /******************************************************************************/
43
44 #include <errno.h>
45 #include <err.h>
46 #include <signal.h>
47 #include <stdio.h>
48 #include <stdlib.h>
49 #include <string.h>
50 #include <unistd.h>
51
52 #include "../libcontrollers/libcontrollers.h"
53
54 char *TCID = "cpu_controller_latency_tests";
55 int TST_TOTAL = 2;
56
sighandler(int i)57 void sighandler(int i)
58 {
59 exit(0);
60 }
61
main(int argc,char * argv[])62 int main(int argc, char *argv[])
63 {
64 char mytaskfile[FILENAME_MAX];
65 int test_num;
66
67 struct sigaction newaction, oldaction;
68
69 /* TODO (garrcoop): add error handling. */
70 sigemptyset(&newaction.sa_mask);
71 sigaddset(&newaction.sa_mask, SIGUSR1);
72 newaction.sa_handler = &sighandler;
73 sigaction(SIGUSR1, &newaction, &oldaction);
74
75 if (argc < 2 || argc > 3) {
76 errx(EINVAL, "TBROK\t Invalid #args received from script"
77 " The test will run without any cpu load");
78 }
79
80 /* Migrate the task to its group if applicable */
81 test_num = atoi(argv[1]);
82 if (test_num < 0) {
83 errx(EINVAL,
84 "Invalid test number received from script. "
85 "Skipping load creation");
86 }
87
88 if (test_num == 2) {
89 strncpy(mytaskfile, argv[2], FILENAME_MAX);
90 strncat(mytaskfile, "/tasks",
91 FILENAME_MAX - strlen(mytaskfile) - 1);
92 write_to_file(mytaskfile, "a", getpid());
93 }
94
95 while (1) ;
96
97 return 0;
98 }
99