Home | History | Annotate | Download | only in utils
      1 /*
      2  * Crackerjack Project
      3  *
      4  * Copyright (C) 2007-2008, Hitachi, Ltd.
      5  * Author(s): Takahiro Yasui <takahiro.yasui.mp (at) hitachi.com>,
      6  *            Yumiko Sugita <yumiko.sugita.yf (at) hitachi.com>,
      7  *            Satoshi Fujiwara <sa-fuji (at) sdl.hitachi.co.jp>
      8  *
      9  * This program is free software; you can redistribute it and/or
     10  * modify it under the terms of the GNU General Public License
     11  * as published by the Free Software Foundation; either version 2
     12  * of the License, or (at your option) any later version.
     13  *
     14  * This program is distributed in the hope that it will be useful,
     15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     17  * GNU General Public License for more details.
     18  *
     19  * You should have received a copy of the GNU General Public License
     20  * along with this program; if not, write to the Free Software
     21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
     22  *
     23  * $Id: include_j_h.h,v 1.2 2009/09/27 17:34:22 subrata_modak Exp $
     24  *
     25  */
     26 #ifndef __CJK_SYSCALL_J_H__
     27 #define __CJK_SYSCALL_J_H__
     28 
     29 #include <sys/time.h>
     30 #include <sys/resource.h>
     31 
     32 
     33 #define REG_RESULT_LOG_FP	stdout
     34 #define REG_DETAIL_LOG_FP	stderr
     35 
     36 
     37 /*
     38  * RPRINTF : macro to output test result
     39  */
     40 #define RPRINTF(...)						\
     41 	do {							\
     42 		fprintf(REG_RESULT_LOG_FP, __VA_ARGS__);	\
     43 	} while (0)
     44 
     45 
     46 /*
     47  * PRINTF : macro to output detail log
     48  */
     49 #define PRINTF(...)						\
     50 	do {							\
     51 		fprintf(REG_DETAIL_LOG_FP, __VA_ARGS__);	\
     52 	} while (0)
     53 
     54 
     55 /*
     56  * EPRINTF : macro to output error message
     57  */
     58 #define EPRINTF(...)						\
     59 	do {							\
     60 		fprintf(REG_DETAIL_LOG_FP, __VA_ARGS__);	\
     61 	} while (0)
     62 
     63 /*
     64  * PRINT_XXX : macro to output test result and expect
     65  */
     66 #define __PRINT_EXPECT(rc_has_range, rc, errno)				\
     67 	do {								\
     68 		if (rc_has_range)					\
     69 			PRINTF("EXPECT: return value(ret)=%s",		\
     70 			       (rc) >= 0 ? "(N >= 0)" : "(N <  0)");	\
     71 		else							\
     72 			PRINTF("EXPECT: return value(ret)=%d", rc);	\
     73 		PRINTF(" errno=%d (%s)", errno, strerror(errno));	\
     74 	} while (0)
     75 
     76 #define __PRINT_RESULT(rc_has_range, rc, errno)				\
     77 	do {								\
     78 		if (rc_has_range)					\
     79 			PRINTF("RESULT: return value(ret)=%8d", rc);	\
     80 		else							\
     81 			PRINTF("RESULT: return value(ret)=%d", rc);	\
     82 		PRINTF(" errno=%d (%s)", errno, strerror(errno));	\
     83 	} while (0)
     84 
     85 #define PRINT_RESULT(rc_has_range, e_rc, e_errno, r_rc, r_errno)	\
     86 	do {								\
     87 		__PRINT_EXPECT(rc_has_range, e_rc, e_errno);		\
     88 		PRINTF("\n");						\
     89 		__PRINT_RESULT(rc_has_range, r_rc, r_errno);		\
     90 		PRINTF("\n");						\
     91 	} while (0)
     92 
     93 #define PRINT_RESULT_EXTRA(rc_has_range, e_rc, e_errno, r_rc, r_errno,	\
     94 			   str, extra_ok)				\
     95 	do {								\
     96 		__PRINT_EXPECT(rc_has_range, e_rc, e_errno);		\
     97 		if ((extra_ok))						\
     98 			PRINTF("\n");					\
     99 		else							\
    100 			PRINTF(", %s=OK\n", str);			\
    101 		__PRINT_RESULT(rc_has_range, r_rc, r_errno);		\
    102 		if ((extra_ok))						\
    103 			PRINTF("\n");					\
    104 		else							\
    105 			PRINTF(", %s=NG\n", str);			\
    106 	} while (0)
    107 
    108 #define PRINT_RESULT_CMP(rc_has_range, e_rc, e_errno, r_rc, r_errno, cmp_ok) \
    109 	PRINT_RESULT_EXTRA(rc_has_range, e_rc, e_errno, r_rc, r_errno,	\
    110 			   "r/w check", cmp_ok)
    111 
    112 
    113 /*
    114  * Definitions
    115  */
    116 enum result_val {
    117 	RESULT_OK,
    118 	RESULT_NG
    119 };
    120 
    121 
    122 /*
    123  * Prototype
    124  */
    125 int setup_uid(char *uname);
    126 int setup_euid(char *uname, uid_t *old_uid);
    127 int cleanup_euid(uid_t old_uid);
    128 
    129 pid_t create_sig_proc(unsigned long usec, int sig, unsigned count);
    130 
    131 int _setup_file(char *testdir, char *fname, char *path, int flags, mode_t mode);
    132 int setup_file(char *testdir, char *fname, char *path);
    133 int cleanup_file(char *path);
    134 
    135 int setup_swapfile(char *testdir, char *fname, char *path, size_t size);
    136 int cleanup_swapfile(char *path);
    137 
    138 #define QUEUE_NAME	"/test_mqueue"
    139 pid_t create_echo_msg_proc(void);
    140 
    141 pid_t get_unexist_pid(void);
    142 
    143 #endif /* __CJK_SYSCALL_J_H__ */
    144