/* * zeroes.c -- component to provide zeroes on demand. */ #include #include #include #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; }