blob: ff6aaf42da61fc29cbc70749338f90a20e09a57e [file] [log] [blame]
/*
* Crackerjack Project
*
* Copyright (C) 2007-2008, Hitachi, Ltd.
* Author(s): Takahiro Yasui <takahiro.yasui.mp@hitachi.com>,
* Yumiko Sugita <yumiko.sugita.yf@hitachi.com>,
* Satoshi Fujiwara <sa-fuji@sdl.hitachi.co.jp>
*
* 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.
*
* $Id: include_j_h.h,v 1.2 2009/09/27 17:34:22 subrata_modak Exp $
*
*/
#ifndef __CJK_SYSCALL_J_H__
#define __CJK_SYSCALL_J_H__
#include <sys/time.h>
#include <sys/resource.h>
#define REG_RESULT_LOG_FP stdout
#define REG_DETAIL_LOG_FP stderr
/*
* RPRINTF : macro to output test result
*/
#define RPRINTF(...) \
do { \
fprintf(REG_RESULT_LOG_FP, __VA_ARGS__); \
} while (0)
/*
* PRINTF : macro to output detail log
*/
#define PRINTF(...) \
do { \
fprintf(REG_DETAIL_LOG_FP, __VA_ARGS__); \
} while (0)
/*
* EPRINTF : macro to output error message
*/
#define EPRINTF(...) \
do { \
fprintf(REG_DETAIL_LOG_FP, __VA_ARGS__); \
} while (0)
/*
* PRINT_XXX : macro to output test result and expect
*/
#define __PRINT_EXPECT(rc_has_range, rc, errno) \
do { \
if (rc_has_range) \
PRINTF("EXPECT: return value(ret)=%s", \
(rc) >= 0 ? "(N >= 0)" : "(N < 0)"); \
else \
PRINTF("EXPECT: return value(ret)=%d", rc); \
PRINTF(" errno=%d (%s)", errno, strerror(errno)); \
} while (0)
#define __PRINT_RESULT(rc_has_range, rc, errno) \
do { \
if (rc_has_range) \
PRINTF("RESULT: return value(ret)=%8d", rc); \
else \
PRINTF("RESULT: return value(ret)=%d", rc); \
PRINTF(" errno=%d (%s)", errno, strerror(errno)); \
} while (0)
#define PRINT_RESULT(rc_has_range, e_rc, e_errno, r_rc, r_errno) \
do { \
__PRINT_EXPECT(rc_has_range, e_rc, e_errno); \
PRINTF("\n"); \
__PRINT_RESULT(rc_has_range, r_rc, r_errno); \
PRINTF("\n"); \
} while (0)
#define PRINT_RESULT_EXTRA(rc_has_range, e_rc, e_errno, r_rc, r_errno, \
str, extra_ok) \
do { \
__PRINT_EXPECT(rc_has_range, e_rc, e_errno); \
if ((extra_ok)) \
PRINTF("\n"); \
else \
PRINTF(", %s=OK\n", str); \
__PRINT_RESULT(rc_has_range, r_rc, r_errno); \
if ((extra_ok)) \
PRINTF("\n"); \
else \
PRINTF(", %s=NG\n", str); \
} while (0)
#define PRINT_RESULT_CMP(rc_has_range, e_rc, e_errno, r_rc, r_errno, cmp_ok) \
PRINT_RESULT_EXTRA(rc_has_range, e_rc, e_errno, r_rc, r_errno, \
"r/w check", cmp_ok)
/*
* Definitions
*/
enum result_val {
RESULT_OK,
RESULT_NG
};
/*
* Prototype
*/
int setup_uid(char *uname);
int setup_euid(char *uname, uid_t *old_uid);
int cleanup_euid(uid_t old_uid);
pid_t create_sig_proc(unsigned long usec, int sig, unsigned count);
int _setup_file(char *testdir, char *fname, char *path, int flags, mode_t mode);
int setup_file(char *testdir, char *fname, char *path);
int cleanup_file(char *path);
int setup_swapfile(char *testdir, char *fname, char *path, size_t size);
int cleanup_swapfile(char *path);
int setup_ulimit_fnum(rlim_t newlim, rlim_t *oldlim);
int cleanup_ulimit_fnum(rlim_t oldlim);
int setup_proc_fs(char *path, int newval, int *oldval);
int cleanup_proc_fs(char *path, int oldval);
#define QUEUE_NAME "/test_mqueue"
pid_t create_echo_msg_proc(void);
pid_t get_unexist_pid(void);
#endif /* __CJK_SYSCALL_J_H__ */