16e112132382b6442b636ee39b02951d771408e8frobbiew/*
26e112132382b6442b636ee39b02951d771408e8frobbiew* Disktest
36e112132382b6442b636ee39b02951d771408e8frobbiew* Copyright (c) International Business Machines Corp., 2001
46e112132382b6442b636ee39b02951d771408e8frobbiew*
56e112132382b6442b636ee39b02951d771408e8frobbiew*
66e112132382b6442b636ee39b02951d771408e8frobbiew* This program is free software; you can redistribute it and/or modify
76e112132382b6442b636ee39b02951d771408e8frobbiew* it under the terms of the GNU General Public License as published by
86e112132382b6442b636ee39b02951d771408e8frobbiew* the Free Software Foundation; either version 2 of the License, or
96e112132382b6442b636ee39b02951d771408e8frobbiew* (at your option) any later version.
106e112132382b6442b636ee39b02951d771408e8frobbiew*
116e112132382b6442b636ee39b02951d771408e8frobbiew* This program is distributed in the hope that it will be useful,
126e112132382b6442b636ee39b02951d771408e8frobbiew* but WITHOUT ANY WARRANTY; without even the implied warranty of
136e112132382b6442b636ee39b02951d771408e8frobbiew* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
146e112132382b6442b636ee39b02951d771408e8frobbiew* GNU General Public License for more details.
156e112132382b6442b636ee39b02951d771408e8frobbiew*
166e112132382b6442b636ee39b02951d771408e8frobbiew* You should have received a copy of the GNU General Public License
176e112132382b6442b636ee39b02951d771408e8frobbiew* along with this program; if not, write to the Free Software
186e112132382b6442b636ee39b02951d771408e8frobbiew* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
196e112132382b6442b636ee39b02951d771408e8frobbiew*
206e112132382b6442b636ee39b02951d771408e8frobbiew*  Please send e-mail to yardleyb@us.ibm.com if you have
216e112132382b6442b636ee39b02951d771408e8frobbiew*  questions or comments.
226e112132382b6442b636ee39b02951d771408e8frobbiew*
236e112132382b6442b636ee39b02951d771408e8frobbiew*  Project Website:  TBD
246e112132382b6442b636ee39b02951d771408e8frobbiew*
256e112132382b6442b636ee39b02951d771408e8frobbiew*
2677e42cafa8942eba6e7706c9d9c25a04ec7cdda5subrata_modak* $Id: sfunc.h,v 1.5 2008/02/14 08:22:23 subrata_modak Exp $
276e112132382b6442b636ee39b02951d771408e8frobbiew* $Log: sfunc.h,v $
2877e42cafa8942eba6e7706c9d9c25a04ec7cdda5subrata_modak* Revision 1.5  2008/02/14 08:22:23  subrata_modak
2977e42cafa8942eba6e7706c9d9c25a04ec7cdda5subrata_modak* Disktest application update to version 1.4.2, by, Brent Yardley <yardleyb@us.ibm.com>
3077e42cafa8942eba6e7706c9d9c25a04ec7cdda5subrata_modak*
3177e42cafa8942eba6e7706c9d9c25a04ec7cdda5subrata_modak* Revision 1.13  2005/10/12 23:13:35  yardleyb
3277e42cafa8942eba6e7706c9d9c25a04ec7cdda5subrata_modak* Updates to code to support new function in disktest version 1.3.x.
3377e42cafa8942eba6e7706c9d9c25a04ec7cdda5subrata_modak* Actual changes are recorded in the README
34d18ffdd88be3c62d027fd49a115bc9c4fe4b910cmridge*
35d18ffdd88be3c62d027fd49a115bc9c4fe4b910cmridge* Revision 1.12  2005/05/03 16:24:38  yardleyb
36d18ffdd88be3c62d027fd49a115bc9c4fe4b910cmridge* Added needed code changes to support windows
37d18ffdd88be3c62d027fd49a115bc9c4fe4b910cmridge*
38d18ffdd88be3c62d027fd49a115bc9c4fe4b910cmridge* Revision 1.11  2005/01/08 21:18:34  yardleyb
39d18ffdd88be3c62d027fd49a115bc9c4fe4b910cmridge* Update performance output and usage.  Fixed pass count check
40d18ffdd88be3c62d027fd49a115bc9c4fe4b910cmridge*
41d18ffdd88be3c62d027fd49a115bc9c4fe4b910cmridge* Revision 1.10  2004/11/02 20:47:13  yardleyb
42d18ffdd88be3c62d027fd49a115bc9c4fe4b910cmridge* Added -F functions.
43d18ffdd88be3c62d027fd49a115bc9c4fe4b910cmridge* lots of minor fixes. see README
446b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew*
456b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew* Revision 1.9  2002/03/30 01:32:14  yardleyb
466b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew* Major Changes:
476b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew*
486b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew* Added Dumping routines for
496b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew* data miscompares,
506b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew*
516b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew* Updated performance output
526b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew* based on command line.  Gave
536b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew* one decimal in MB/s output.
546b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew*
556b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew* Rewrote -pL IO routine to show
566b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew* correct stats.  Now show pass count
576b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew* when using -C.
586b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew*
596b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew* Minor Changes:
606b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew*
616b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew* Code cleanup to remove the plethera
626b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew* if #ifdef for windows/unix functional
636b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew* differences.
646b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew*
656b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew* Revision 1.8  2002/02/28 02:04:32  yardleyb
666b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew* Moved FileSeek64 to IO
676b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew* source files.
686e112132382b6442b636ee39b02951d771408e8frobbiew*
696e112132382b6442b636ee39b02951d771408e8frobbiew* Revision 1.7  2002/02/19 02:46:37  yardleyb
706e112132382b6442b636ee39b02951d771408e8frobbiew* Added changes to compile for AIX.
716e112132382b6442b636ee39b02951d771408e8frobbiew* Update getvsiz so it returns a -1
726e112132382b6442b636ee39b02951d771408e8frobbiew* if the ioctl fails and we handle
736e112132382b6442b636ee39b02951d771408e8frobbiew* that fact correctly.  Added check
746e112132382b6442b636ee39b02951d771408e8frobbiew* to force vsiz to always be greater
756e112132382b6442b636ee39b02951d771408e8frobbiew* then stop_lba.
766e112132382b6442b636ee39b02951d771408e8frobbiew*
776e112132382b6442b636ee39b02951d771408e8frobbiew* Revision 1.6  2001/12/04 18:51:06  yardleyb
786e112132382b6442b636ee39b02951d771408e8frobbiew* Checkin of new source files and removal
796e112132382b6442b636ee39b02951d771408e8frobbiew* of outdated source
806e112132382b6442b636ee39b02951d771408e8frobbiew*
816e112132382b6442b636ee39b02951d771408e8frobbiew* Revision 1.4  2001/10/10 00:17:14  yardleyb
826e112132382b6442b636ee39b02951d771408e8frobbiew* Added Copyright and GPL license text.
836e112132382b6442b636ee39b02951d771408e8frobbiew* Miner bug fixes throughout text.
846e112132382b6442b636ee39b02951d771408e8frobbiew*
856e112132382b6442b636ee39b02951d771408e8frobbiew* Revision 1.3  2001/09/22 03:44:25  yardleyb
866e112132382b6442b636ee39b02951d771408e8frobbiew* Added level code pMsg.
876e112132382b6442b636ee39b02951d771408e8frobbiew*
886e112132382b6442b636ee39b02951d771408e8frobbiew* Revision 1.2  2001/09/06 18:23:30  yardleyb
896e112132382b6442b636ee39b02951d771408e8frobbiew* Added duty cycle -D.  Updated usage. Added
906e112132382b6442b636ee39b02951d771408e8frobbiew* make option to create .tar.gz of all files
916e112132382b6442b636ee39b02951d771408e8frobbiew*
926e112132382b6442b636ee39b02951d771408e8frobbiew* Revision 1.1  2001/09/05 22:44:42  yardleyb
936e112132382b6442b636ee39b02951d771408e8frobbiew* Split out some of the special functions.
946e112132382b6442b636ee39b02951d771408e8frobbiew* added O_DIRECT -Id.  Updated usage.  Lots
956e112132382b6442b636ee39b02951d771408e8frobbiew* of clean up to functions.  Added header info
966e112132382b6442b636ee39b02951d771408e8frobbiew* to pMsg.
976e112132382b6442b636ee39b02951d771408e8frobbiew*
986e112132382b6442b636ee39b02951d771408e8frobbiew*
996e112132382b6442b636ee39b02951d771408e8frobbiew*/
1006e112132382b6442b636ee39b02951d771408e8frobbiew
1016b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew#ifndef _SFUNC_H
1026b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew#define _SFUNC_H 1
1036b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew
1046e112132382b6442b636ee39b02951d771408e8frobbiew#include <stdarg.h>
1056e112132382b6442b636ee39b02951d771408e8frobbiew
1066e112132382b6442b636ee39b02951d771408e8frobbiew#include "main.h"
1076e112132382b6442b636ee39b02951d771408e8frobbiew#include "defs.h"
1086e112132382b6442b636ee39b02951d771408e8frobbiew
1096e112132382b6442b636ee39b02951d771408e8frobbiewtypedef enum lvl {
11077e42cafa8942eba6e7706c9d9c25a04ec7cdda5subrata_modak	START, END, STAT, INFO, DBUG, WARN, ERR
1116e112132382b6442b636ee39b02951d771408e8frobbiew} lvl_t;
1126e112132382b6442b636ee39b02951d771408e8frobbiew
1136b98df5129acc12aad3167a9c6c12fda5afc6c31robbiewtypedef struct fmt_time {
114d18ffdd88be3c62d027fd49a115bc9c4fe4b910cmridge	time_t days;
1156b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew	time_t hours;
1166b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew	time_t minutes;
1176b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew	time_t seconds;
1186b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew} fmt_time_t;
1196b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew
1206e112132382b6442b636ee39b02951d771408e8frobbiewOFF_T my_strtofft(const char *pStr);
12177e42cafa8942eba6e7706c9d9c25a04ec7cdda5subrata_modakint pMsg(lvl_t level, const child_args_t *, char *Msg,...);
1226e112132382b6442b636ee39b02951d771408e8frobbiewvoid fill_buffer(void *, size_t, void *, size_t, const unsigned int);
12377e42cafa8942eba6e7706c9d9c25a04ec7cdda5subrata_modakvoid mark_buffer(void *, const size_t, void *, const child_args_t *, const test_env_t *);
124d18ffdd88be3c62d027fd49a115bc9c4fe4b910cmridgevoid normalize_percs(child_args_t *);
1256b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew#ifndef WINDOWS
1266e112132382b6442b636ee39b02951d771408e8frobbiewvoid Sleep(unsigned int);
127d18ffdd88be3c62d027fd49a115bc9c4fe4b910cmridgechar *strupr(char *);
128d18ffdd88be3c62d027fd49a115bc9c4fe4b910cmridgechar *strlwr(char *);
1296e112132382b6442b636ee39b02951d771408e8frobbiew#endif
130d18ffdd88be3c62d027fd49a115bc9c4fe4b910cmridgeOFF_T get_vsiz(const char *);
131d18ffdd88be3c62d027fd49a115bc9c4fe4b910cmridgeOFF_T get_file_size(char *);
1326e112132382b6442b636ee39b02951d771408e8frobbiewOFF_T Rand64(void);
1336b98df5129acc12aad3167a9c6c12fda5afc6c31robbiewfmt_time_t format_time(time_t);
1346b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew
1356b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew#endif /* _SFUNC_H */
1366b98df5129acc12aad3167a9c6c12fda5afc6c31robbiew
137