noisebox/zeroes.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;
}