Hi Subrata,
Please accept the patch below.

Thanks,
Gowri
---

realtime: use mlockall optionally in realtime tests

Below patch adds the support to enable memory lock in realtime testcases
optionally (with -m).

Testing Informations:
  Tested the realtime tests in their default profile and as well
  as using mlock option.

Signed-off-by: Vernon Mauery <[email protected]>
Signed-off-by: Gowrishankar <[email protected]>
Tested-by: Gowrishankar <[email protected]>
Acked-by: Kiran Prakash <[email protected]>
Acked-by: Dinakar Guniguntala <[email protected]>
Acked-by: Sripathi Kodi <[email protected]>
Acked-by: Darren Hart <[email protected]>
---
Index: ltp-full-20090531/testcases/realtime/lib/librttest.c
===================================================================
--- ltp-full-20090531.orig/testcases/realtime/lib/librttest.c	2009-06-22 15:40:31.000000000 +0530
+++ ltp-full-20090531/testcases/realtime/lib/librttest.c	2009-06-29 12:45:27.000000000 +0530
@@ -57,6 +57,7 @@
 #include <sys/stat.h>
 #include <sys/syscall.h>
 #include <sys/types.h>
+#include <sys/mman.h>
 #include <fcntl.h>
 #include <math.h>
 
@@ -77,6 +78,7 @@
 	printf("librt standard options:\n");
 	printf("  -b(0,1)	1:enable buffered output, 0:diable buffered output\n");
 	printf("  -p(0,1)	0:don't use pi mutexes, 1:use pi mutexes\n");
+	printf("  -m		use mlockall\n");
 	printf("  -v[0-4]	0:no debug, 1:DBG_ERR, 2:DBG_WARN, 3:DBG_INFO, 4:DBG_DEBUG\n");
 	printf("  -s		Enable saving stats data (default disabled)\n");
 	printf("  -c		Set pass criteria\n");
@@ -103,9 +105,10 @@
 	size_t i;
 	int c;
 	opterr = 0;
+	int mlock = 0;
 	char *all_options;
 
-	if (asprintf(&all_options, ":b:p:v:sc:%s", options) == -1) {
+	if (asprintf(&all_options, ":b:mp:v:sc:%s", options) == -1) {
 		fprintf(stderr, "Failed to allocate string for option string\n");
 		exit(1);
 	}
@@ -135,6 +138,9 @@
 		case 'p':
 			_use_pi = atoi(optarg);
 			break;
+		case 'm':
+			mlock = 1;
+			break;
 		case 'v':
 			_dbg_lvl = atoi(optarg);
 			break;
@@ -161,6 +167,12 @@
 		printf("Priority Inheritance has been disabled for this run.\n");
 	if (use_buffer)
 		buffer_init();
+	if (mlock) {
+		if (mlockall(MCL_CURRENT|MCL_FUTURE)) {
+			perror("failed to lock memory\n");
+			exit(1);
+		}
+	}
 
 	calibrate_busyloop();
 
Index: ltp-full-20090531/testcases/realtime/doc/TODO
===================================================================
--- ltp-full-20090531.orig/testcases/realtime/doc/TODO	2009-06-22 16:30:37.000000000 +0530
+++ ltp-full-20090531/testcases/realtime/doc/TODO	2009-06-22 16:30:48.000000000 +0530
@@ -2,8 +2,6 @@
 o Add libjvmsim support to all tests, e.g. matrix_mult
 o Add help output (-h option) to all tests, e.g. matrix_mult
 o Use librt debug output mechanism in all tests, e.g. matrix_mult
-o Add option to mlock_all() to all tests (probably as part of librt standard
-  options)
 
 o Add/integrate network tests
 o Add/integrate load tests
Index: ltp-full-20090531/testcases/realtime/func/measurement/preempt_timing.c
===================================================================
--- ltp-full-20090531.orig/testcases/realtime/func/measurement/preempt_timing.c	2009-06-22 16:32:41.000000000 +0530
+++ ltp-full-20090531/testcases/realtime/func/measurement/preempt_timing.c	2009-06-22 16:33:01.000000000 +0530
@@ -116,12 +116,6 @@
 		exit(-1);
 	}
 
-	if (mlockall(MCL_CURRENT)) {
-		fprintf(stderr, "Couldn't lock memory\n");
-		exit(1);
-	}
-
-
 	for(j=0; j < INTERVALS; j++){
 		/* Collect samples */
 		for(i = 0; i < ITERATIONS; i++)
Index: ltp-full-20090531/testcases/realtime/func/pi-tests/run_auto.sh
===================================================================
--- ltp-full-20090531.orig/testcases/realtime/func/pi-tests/run_auto.sh	2009-06-25 13:29:35.000000000 +0530
+++ ltp-full-20090531/testcases/realtime/func/pi-tests/run_auto.sh	2009-06-25 13:33:57.000000000 +0530
@@ -12,21 +12,21 @@
 
 # Warning: tests args are now set in profiles
 $SCRIPTS_DIR/run_c_files.sh $profile testpi-0
-$SCRIPTS_DIR/run_c_files.sh $profile testpi-1
 
-LOG_FILE="$LOG_DIR/$LOG_FORMAT-testpi-1.log"
+export LOG_FILE="$LOG_DIR/$LOG_FORMAT-testpi-1.log"
+$SCRIPTS_DIR/run_c_files.sh $profile testpi-1
 PYTHONPATH=../../  python parse-testpi1.py $LOG_FILE 2>&1 | tee -a $LOG_FILE
 
+export LOG_FILE="$LOG_DIR/$LOG_FORMAT-testpi-2.log"
 $SCRIPTS_DIR/run_c_files.sh $profile testpi-2
-LOG_FILE="$LOG_DIR/$LOG_FORMAT-testpi-2.log"
 PYTHONPATH=../../  python parse-testpi2.py $LOG_FILE 2>&1 | tee -a $LOG_FILE
 
+export LOG_FILE="$LOG_DIR/$LOG_FORMAT-testpi-4.log"
 $SCRIPTS_DIR/run_c_files.sh $profile testpi-4
-LOG_FILE="$LOG_DIR/$LOG_FORMAT-testpi-4.log"
 PYTHONPATH=../../  python parse-testpi1.py $LOG_FILE 2>&1 | tee -a $LOG_FILE 
 
 
-
+export LOG_FILE=""
 $SCRIPTS_DIR/run_c_files.sh $profile testpi-5
 $SCRIPTS_DIR/run_c_files.sh $profile testpi-6
 $SCRIPTS_DIR/run_c_files.sh $profile sbrk_mutex
Index: ltp-full-20090531/testcases/realtime/scripts/run_c_files.sh
===================================================================
--- ltp-full-20090531.orig/testcases/realtime/scripts/run_c_files.sh	2009-06-25 13:29:25.000000000 +0530
+++ ltp-full-20090531/testcases/realtime/scripts/run_c_files.sh	2009-06-25 13:36:03.000000000 +0530
@@ -10,7 +10,6 @@
 # pattern "testid testname" and runs the corresponding test with the
 # args defined in the line.
 
-
 [ $# -lt 2 ] && { echo >&2 "$0: too few arguments (at least two)" ; exit 1 ; }
 profile=$1
 shift
@@ -37,7 +36,9 @@
 			shift 2
 			params="$*"
 
-			LOG_FILE="$LOG_DIR/$LOG_FORMAT-${cmd}${params// /}.log"
+			if [ "$LOG_FILE" = "" ]; then
+				LOG_FILE="$LOG_DIR/$LOG_FORMAT-${cmd}${params// /}.log"
+			fi
 			[ ! -d $LOG_DIR ] && mkdir -p $LOG_DIR
 
 			( 
------------------------------------------------------------------------------
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to