xref: /minix3/minix/commands/ramdisk/ramdisk.c (revision 9dfdf6f7ba88aa0947187e7eb831e279fe33ae73)
1433d6423SLionel Sambuc 
2433d6423SLionel Sambuc #include <minix/paths.h>
3433d6423SLionel Sambuc 
4d0055759SDavid van Moolenbroek #include <sys/ioctl.h>
5433d6423SLionel Sambuc #include <stdio.h>
6433d6423SLionel Sambuc #include <fcntl.h>
7433d6423SLionel Sambuc #include <stdlib.h>
8433d6423SLionel Sambuc 
9433d6423SLionel Sambuc int
main(int argc,char * argv[])10433d6423SLionel Sambuc main(int argc, char *argv[])
11433d6423SLionel Sambuc {
12433d6423SLionel Sambuc 	int fd;
13433d6423SLionel Sambuc 	signed long size;
14433d6423SLionel Sambuc 	char *d;
15433d6423SLionel Sambuc 
16433d6423SLionel Sambuc 	if(argc < 2 || argc > 3) {
17433d6423SLionel Sambuc 		fprintf(stderr, "usage: %s <size in kB> [device]\n",
18433d6423SLionel Sambuc 			argv[0]);
19433d6423SLionel Sambuc 		return 1;
20433d6423SLionel Sambuc 	}
21433d6423SLionel Sambuc 
22433d6423SLionel Sambuc 	d = argc == 2 ? _PATH_RAMDISK : argv[2];
23433d6423SLionel Sambuc 	if((fd=open(d, O_RDONLY)) < 0) {
24433d6423SLionel Sambuc 		perror(d);
25433d6423SLionel Sambuc 		return 1;
26433d6423SLionel Sambuc 	}
27433d6423SLionel Sambuc 
28433d6423SLionel Sambuc #define KFACTOR 1024
29433d6423SLionel Sambuc 	size = atol(argv[1])*KFACTOR;
30433d6423SLionel Sambuc 
31433d6423SLionel Sambuc 	if(size < 0) {
32433d6423SLionel Sambuc 		fprintf(stderr, "size should be non-negative.\n");
33433d6423SLionel Sambuc 		return 1;
34433d6423SLionel Sambuc 	}
35433d6423SLionel Sambuc 
36433d6423SLionel Sambuc 	if(ioctl(fd, MIOCRAMSIZE, &size) < 0) {
37433d6423SLionel Sambuc 		perror("MIOCRAMSIZE");
38433d6423SLionel Sambuc 		return 1;
39433d6423SLionel Sambuc 	}
40433d6423SLionel Sambuc 
41*9dfdf6f7SJean-Baptiste Boric 	fprintf(stdout, "size on %s set to %ldkB\n", d, size/KFACTOR);
42433d6423SLionel Sambuc 
43433d6423SLionel Sambuc 	return 0;
44433d6423SLionel Sambuc }
45433d6423SLionel Sambuc 
46