50 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
| // SPDX-License-Identifier: GPL-2.0
 | |
| /*
 | |
|  * Copyright (c) Wipro Technologies Ltd, 2002.  All Rights Reserved.
 | |
|  * AUTHOR: Aniruddha Marathe <aniruddha.marathe@wipro.com>
 | |
|  */
 | |
| 
 | |
| /*\
 | |
|  * [Description]
 | |
|  * This is a Phase I test for the reboot(2) system call.
 | |
|  * It is intended to provide a limited exposure of the system call.
 | |
|  *
 | |
|  * [Algorithm]
 | |
|  * 1) Two test cases for two flag values
 | |
|  * 2) Execute system call
 | |
|  * 3) Check return code, if system call failed (return=-1)
 | |
|  * 4) Log the errno and Issue a FAIL message
 | |
|  * 5) Otherwise, Issue a PASS message
 | |
|  *
 | |
|  * [Restrictions]
 | |
|  * For lib4 and lib5 reboot(2) system call is implemented as
 | |
|  * int reboot(int magic, int magic2, int flag, void *arg); This test case
 | |
|  * is written for int reboot(int flag); which is implemented under glibc
 | |
|  * Therefore this testcase may not work under libc4 and libc5 libraries.
 | |
|  */
 | |
| 
 | |
| #include <unistd.h>
 | |
| #include <sys/reboot.h>
 | |
| #include <linux/reboot.h>
 | |
| #include "tst_test.h"
 | |
| 
 | |
| static struct tcase {
 | |
| 	const char *option_message;
 | |
| 	int flag;
 | |
| } tcases[] = {
 | |
| 	{"LINUX_REBOOT_CMD_CAD_ON", LINUX_REBOOT_CMD_CAD_ON,},
 | |
| 	{"LINUX_REBOOT_CMD_CAD_OFF", LINUX_REBOOT_CMD_CAD_OFF,},
 | |
| };
 | |
| 
 | |
| static void run(unsigned int n)
 | |
| {
 | |
| 	TST_EXP_PASS(reboot(tcases[n].flag),
 | |
| 		"reboot(%s)", tcases[n].option_message);
 | |
| }
 | |
| 
 | |
| static struct tst_test test = {
 | |
| 	.needs_root = 1,
 | |
| 	.test = run,
 | |
| 	.tcnt = ARRAY_SIZE(tcases),
 | |
| };
 |