* - by Mark Lord (C) 1994-2002 -- freely distributable
*/
#include "libbb.h"
+/* must be _after_ libbb.h: */
#include <linux/hdreg.h>
+#include <sys/mount.h>
+#if !defined(BLKGETSIZE64)
+# define BLKGETSIZE64 _IOR(0x12,114,size_t)
+#endif
/* device types */
/* ------------ */
#ifdef DO_FLUSHCACHE
unsigned char flushcache[4] = { WIN_FLUSHCACHE, 0, 0, 0 };
#endif
-};
+} FIX_ALIASING;
#define G (*(struct globals*)&bb_common_bufsiz1)
struct BUG_G_too_big {
char BUG_G_too_big[sizeof(G) <= COMMON_BUFSIZE ? 1 : -1];
"unknown""\0" "1Sect""\0" "DualPort""\0" "DualPortCache"
;
-static void dump_identity(const struct hd_driveid *id)
+static NOINLINE void dump_identity(const struct hd_driveid *id)
{
int i;
const unsigned short *id_regs = (const void*) id;
} else { /* Time device */
printf("Timing buffered disk reads:");
}
- fflush(stdout);
+ fflush_all();
/* Now do the timing */
iterations = 0;
unsigned char args[4] = { WIN_SETFEATURES, 0, 0, 0 };
const char *fmt = " %s\t= %2ld";
- /*fd = xopen(devname, O_RDONLY | O_NONBLOCK);*/
- xmove_fd(xopen(devname, O_RDONLY | O_NONBLOCK), fd);
+ /*fd = xopen_nonblocking(devname);*/
+ xmove_fd(xopen_nonblocking(devname), fd);
printf("\n%s:\n", devname);
if (getset_readahead == IS_SET) {