android13/external/ltp/testcases/kernel/controllers/cpuctl/cpuctl_latency_test.c

99 lines
4.4 KiB
C

/******************************************************************************/
/* */
/* Copyright (c) International Business Machines Corp., 2008 */
/* */
/* This program is free software; you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 2 of the License, or */
/* (at your option) any later version. */
/* */
/* This program is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See */
/* the GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* along with this program; if not, write to the Free Software */
/* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */
/* */
/******************************************************************************/
/******************************************************************************/
/* */
/* File: cpuctl_latency_test.c */
/* */
/* Description: This is a c program that runs a task which tries to keep cpu */
/* busy in doing some calculations. The task will be used to */
/* check the latency under group scheduling. */
/* The file is to be used by script */
/* */
/* Total Tests: 2 */
/* */
/* Test Name: cpu_controller_latency_tests */
/* */
/* Test Assertion */
/* Please refer to the file cpuctl_testplan.txt */
/* */
/* Author: Sudhir Kumar skumar@linux.vnet.ibm.com */
/* */
/* History: */
/* Created- 26/11/2008 -Sudhir Kumar <skumar@linux.vnet.ibm.com> */
/* */
/******************************************************************************/
#include <errno.h>
#include <err.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "../libcontrollers/libcontrollers.h"
char *TCID = "cpu_controller_latency_tests";
int TST_TOTAL = 2;
void sighandler(int i)
{
exit(0);
}
int main(int argc, char *argv[])
{
char mytaskfile[FILENAME_MAX];
int test_num;
struct sigaction newaction, oldaction;
/* TODO (garrcoop): add error handling. */
sigemptyset(&newaction.sa_mask);
sigaddset(&newaction.sa_mask, SIGUSR1);
newaction.sa_handler = &sighandler;
sigaction(SIGUSR1, &newaction, &oldaction);
if (argc < 2 || argc > 3) {
errx(EINVAL, "TBROK\t Invalid #args received from script"
" The test will run without any cpu load");
}
/* Migrate the task to its group if applicable */
test_num = atoi(argv[1]);
if (test_num < 0) {
errx(EINVAL,
"Invalid test number received from script. "
"Skipping load creation");
}
if (test_num == 2) {
strncpy(mytaskfile, argv[2], FILENAME_MAX);
strncat(mytaskfile, "/tasks",
FILENAME_MAX - strlen(mytaskfile) - 1);
write_to_file(mytaskfile, "a", getpid());
}
while (1) ;
return 0;
}