55 lines
1.3 KiB
C
55 lines
1.3 KiB
C
/*
|
|
* zeroes.c -- component to provide zeroes on demand.
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#include "noisebox.h"
|
|
|
|
// static int do_readdir(const char *path, void *buffer,
|
|
// fuse_fill_dir_t filler, off_t offset, struct fuse_file_info *fi) {
|
|
// filler(buffer, ".", NULL, 0);
|
|
// filler(buffer, "..", NULL, 0);
|
|
// }
|
|
|
|
static int do_getattr(const char *path, struct stat *st) {
|
|
}
|
|
|
|
|
|
static int get_noise(size_t n, off_t offset, char* buf,
|
|
struct fuse_file_info *fi) {
|
|
printf("getting zeroes: %i:%i\n", n, offset);
|
|
char *tmp = calloc(n, sizeof(char));
|
|
memcpy(buf, tmp, n);
|
|
free(tmp);
|
|
printf("zeroes obtained\n");
|
|
return n;
|
|
}
|
|
|
|
Noiser* zero_init(void) {
|
|
Noiser* n = malloc(sizeof(Noiser));
|
|
n->name = "zero";
|
|
n->state = NULL;
|
|
n->get_noise = get_noise;
|
|
|
|
// manually keep track of file count for now.
|
|
n->noisefile_count = 3;
|
|
n->files = malloc(sizeof(NoiseFile *) * n->noisefile_count);
|
|
|
|
n->files[0] = malloc(sizeof(NoiseFile));
|
|
n->files[0]->name = "1M";
|
|
n->files[0]->size = 1ULL<<20;
|
|
|
|
n->files[1] = malloc(sizeof(NoiseFile));
|
|
n->files[1]->name = "1G";
|
|
n->files[1]->size = 1ULL<<30;
|
|
|
|
n->files[2] = malloc(sizeof(NoiseFile));
|
|
n->files[2]->name = "100G";
|
|
n->files[2]->size = 100 * (1ULL<<30);
|
|
|
|
return n;
|
|
}
|