chore: first commit
This commit is contained in:
commit
5381313b02
27
.gitignore
vendored
Normal file
27
.gitignore
vendored
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
*.in
|
||||||
|
*.o
|
||||||
|
Makefile
|
||||||
|
*~
|
||||||
|
config.h
|
||||||
|
*.log
|
||||||
|
*.status
|
||||||
|
stamp-h1
|
||||||
|
*.cache
|
||||||
|
.deps
|
||||||
|
configure
|
||||||
|
depcomp
|
||||||
|
install-sh
|
||||||
|
missing
|
||||||
|
ar-lib
|
||||||
|
compile
|
||||||
|
aclocal.m4
|
||||||
|
*.a
|
||||||
|
*.exe
|
||||||
|
src/stpdfs-fuse
|
||||||
|
|
||||||
|
*.cmd
|
||||||
|
*.symvers
|
||||||
|
*.ko
|
||||||
|
*.mod
|
||||||
|
*.mod.*
|
||||||
|
*.order
|
1
Makefile.am
Normal file
1
Makefile.am
Normal file
|
@ -0,0 +1 @@
|
||||||
|
SUBDIRS = lib src module
|
6
Makefile.kernel
Normal file
6
Makefile.kernel
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
obj-m=$(module_DATA)
|
||||||
|
MI_OBJS = $(module_DATA)
|
||||||
|
|
||||||
|
all clean:
|
||||||
|
mv Makefile.automake Makefile
|
||||||
|
$(MAKE) $@
|
25
configure.ac
Normal file
25
configure.ac
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
AC_INIT([StupidFS], [0.0])
|
||||||
|
|
||||||
|
AM_INIT_AUTOMAKE([foreign subdir-objects])
|
||||||
|
|
||||||
|
AC_CONFIG_MACRO_DIRS([m4])
|
||||||
|
|
||||||
|
AC_LANG(C)
|
||||||
|
AC_PROG_CC
|
||||||
|
AC_PROG_CPP
|
||||||
|
AM_PROG_AR
|
||||||
|
AC_PROG_INSTALL
|
||||||
|
AM_PROG_CC_C_O
|
||||||
|
|
||||||
|
PKG_CHECK_MODULES([FUSE], [fuse3])
|
||||||
|
|
||||||
|
AC_CHECK_INCLUDES_DEFAULT
|
||||||
|
AC_C_CONST
|
||||||
|
AC_C_INLINE
|
||||||
|
|
||||||
|
AC_CONFIG_FILES([Makefile
|
||||||
|
lib/Makefile
|
||||||
|
module/Makefile
|
||||||
|
src/Makefile])
|
||||||
|
|
||||||
|
AC_OUTPUT
|
0
lib/Makefile.am
Normal file
0
lib/Makefile.am
Normal file
20
lib/stpdfs.h
Normal file
20
lib/stpdfs.h
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
#ifndef STPDFS_H
|
||||||
|
# define STPDFS_H 1
|
||||||
|
|
||||||
|
#define STPDFS_MAGIC 0x44505453
|
||||||
|
|
||||||
|
#define STPDFS_BLOCK_SIZE 512
|
||||||
|
|
||||||
|
struct stpdfs_superblock {
|
||||||
|
uint32_t magic;
|
||||||
|
uint32_t isize;
|
||||||
|
uint32_t fsize;
|
||||||
|
uint32_t free[100];
|
||||||
|
uint8_t nfree;
|
||||||
|
uint8_t flock;
|
||||||
|
uint8_t ilock;
|
||||||
|
uint8_t fmod;
|
||||||
|
uint32_t time[2];
|
||||||
|
} __attribute__((packed));
|
||||||
|
|
||||||
|
#endif /* !STPDFS_H */
|
20
module/Makefile.am
Normal file
20
module/Makefile.am
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
moduledir = @moduledir@
|
||||||
|
KBUILD_VERBOSE = 1
|
||||||
|
MOD_DEVDIR = $(PWD)
|
||||||
|
|
||||||
|
export module_DATA
|
||||||
|
|
||||||
|
EXTRA_PROGRAMS = stpdfs_module
|
||||||
|
stpdfs_module_SOURCES = module_stpdfs.c
|
||||||
|
module_DATA = module_stpdfs.o
|
||||||
|
|
||||||
|
$(module_DATA): $(stpdfs_module_SOURCES)
|
||||||
|
mv Makefile Makefile.automake
|
||||||
|
cp $(srcdir)/../Makefile.kernel Makefile
|
||||||
|
CPPFLAGS="" CFLAGS="" LDFLAGS="" \
|
||||||
|
$(MAKE) -C /lib/modules/$(shell uname -r)/build \
|
||||||
|
ARCH="x86" CC="gcc" M=$(PWD) modules\
|
||||||
|
KBUILD_VERBOSE=$(KBUILD_VERBOSE)
|
||||||
|
mv Makefile.automake Makefile
|
||||||
|
|
||||||
|
CLEANFILES = $(module_DATA) .$(module_DATA).flags $(module_DATA:.o=.mod.c) $(module_DATA:.o=.@kernelext@)
|
24
module/module_stpdfs.c
Normal file
24
module/module_stpdfs.c
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
|
||||||
|
static int __init
|
||||||
|
stpdfs_mod_init(void)
|
||||||
|
{
|
||||||
|
printk("Hello, world!\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
module_init(stpdfs_mod_init);
|
||||||
|
|
||||||
|
static void __exit
|
||||||
|
stpdfs_mod_exit(void)
|
||||||
|
{
|
||||||
|
printk("Goodbye, world!\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
module_exit(stpdfs_mod_exit);
|
||||||
|
|
||||||
|
MODULE_LICENSE("BSD3");
|
||||||
|
MODULE_AUTHOR("d0p1");
|
||||||
|
MODULE_DESCRIPTION("Stupid File System");
|
||||||
|
MODULE_VERSION("1.0");
|
6
src/Makefile.am
Normal file
6
src/Makefile.am
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
AM_CFLAGS = $(FUSE_CFLAGS)
|
||||||
|
LDADD = $(FUSE_LIBS)
|
||||||
|
|
||||||
|
bin_PROGRAMS = stpdfs-fuse
|
||||||
|
|
||||||
|
stpdfs_fuse_SOURCES = main.c
|
61
src/main.c
Normal file
61
src/main.c
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#define FUSE_USE_VERSION 31
|
||||||
|
#include <fuse.h>
|
||||||
|
|
||||||
|
static void *
|
||||||
|
stpdfs_init(struct fuse_conn_info *conn,
|
||||||
|
struct fuse_config *config)
|
||||||
|
{
|
||||||
|
(void)conn;
|
||||||
|
|
||||||
|
return (NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
stpdfs_getattr(const char *path, struct stat *stbuf,
|
||||||
|
struct fuse_file_info *fi)
|
||||||
|
{
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
stpdfs_readdir(const char *path, void *buf, fuse_fill_dir_t filler,
|
||||||
|
off_t offset, struct fuse_file_info *fi,
|
||||||
|
enum fuse_readdir_flags flags)
|
||||||
|
{
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
stpdfs_open(const char *path, struct fuse_file_info *fi)
|
||||||
|
{
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
stpdfs_read(const char *path, char *buf, size_t size, off_t offset,
|
||||||
|
struct fuse_file_info *fi)
|
||||||
|
{
|
||||||
|
return (size);
|
||||||
|
}
|
||||||
|
|
||||||
|
static const struct fuse_operations stpdfs_oper = {
|
||||||
|
.init = stpdfs_init,
|
||||||
|
.getattr = stpdfs_getattr,
|
||||||
|
.readdir = stpdfs_readdir,
|
||||||
|
.open = stpdfs_open,
|
||||||
|
.read = stpdfs_read
|
||||||
|
};
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
struct fuse_args args = FUSE_ARGS_INIT(argc, argv);
|
||||||
|
|
||||||
|
ret = fuse_main(args.argc, args.argv, &stpdfs_oper, NULL);
|
||||||
|
fuse_opt_free_args(&args);
|
||||||
|
return (ret);
|
||||||
|
}
|
0
win32/stpdfs.rc
Normal file
0
win32/stpdfs.rc
Normal file
0
win32/stpdinit.c
Normal file
0
win32/stpdinit.c
Normal file
Loading…
Reference in a new issue