Page Menu
Home
ClusterLabs Projects
Search
Configure Global Search
Log In
Files
F3151485
devpoke.c
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
1 KB
Referenced Files
None
Subscribers
None
devpoke.c
View Options
#define _GNU_SOURCE /* Berserk glibc headers: O_DIRECT not defined unless _GNU_SOURCE defined */
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset);
#define trace_on(args) args
#define trace_off(args)
#define BREAK asm("int3")
#define warn(string, args...) do { fprintf(stderr, "%s: " string "\n", __FILE__, ##args); } while (0)
#define error(string, args...) do { warn(string, ##args); BREAK; } while (0)
#define trace trace_on
void *malloc_aligned(size_t size, unsigned binalign)
{
unsigned long p = (unsigned long)malloc(size + binalign - 1);
return (void *)(p + (-p & (binalign - 1)));
}
int main(int argc, char *argv[])
{
int err, dev, iterations = 1, blockshift = 13, blocksize = 1 << blockshift;
char *buffer = malloc_aligned(blocksize, blocksize);
if (!(dev = open(argv[1], O_RDWR | O_DIRECT)))
error("Could not open %s", argv[1]);
if (argc < 3 || argc > 4)
error("usage: %s device read/write [iterations]", argv[0]);
if (argc > 3)
iterations = atoi(argv[3]);
int rw = !strcmp(argv[2], "write");
typeof(pread) *fn = rw? ((typeof(pread) *)pwrite): pread;
char *what = rw? "write": "read";
unsigned range = (lseek(dev, 0, SEEK_END) >> blockshift), total = 0;
printf("range = %u, iterations = %u\n", range, iterations);
while (iterations--) {
unsigned block = 1? (rand() % range): total;
trace(warn("%s block %x", what, block);)
if ((err = fn(dev, buffer, blocksize, block << blockshift)) < 0)
error("poke error %i", err);
trace(warn("...block %x done", block);)
total++;
}
return err;
}
File Metadata
Details
Attached
Mime Type
text/x-c
Expires
Mon, Feb 24, 4:41 AM (1 d, 21 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1458704
Default Alt Text
devpoke.c (1 KB)
Attached To
Mode
rF Fence Agents
Attached
Detach File
Event Timeline
Log In to Comment