For character device i/o, FS does a so-called 'magic' grant to let the driver copy from or to user space. As this is done in FS address space, the driver is told to do this in FS address space. The redirection to the right user process then happens at copy-time in the kernel, using the FS grant table. This also happens for DEV_READ and DEV_WRITE on block devices. For other block device i/o, which happens from/to FS buffers, FS does a 'direct' grant to its own address space for the driver. After the i/o returns, this access has to be K-I-L-L-E-D, revoked. Sometimes this is after a SUSPEND and DEV_REVIVE, in which case the revoking happens in pipe.c. This conversion happens in safe_io_conversion() in device.c, called by dev_io and dev_bio. FS has to pre-allocate its own space for these grant tables. This happens in main.c.
35 lines
737 B
Makefile
35 lines
737 B
Makefile
# Makefile for File System (FS)
|
|
SERVER = fs
|
|
|
|
# directories
|
|
u = /usr
|
|
i = $u/include
|
|
s = $i/sys
|
|
h = $i/minix
|
|
|
|
# programs, flags, etc.
|
|
CC = exec cc
|
|
CFLAGS = -I$i $(EXTRA_OPTS)
|
|
LDFLAGS = -i
|
|
LIBS = -lsys -lsysutil -ltimers
|
|
|
|
OBJ = main.o open.o read.o write.o pipe.o dmap.o \
|
|
device.o exec.o path.o mount.o link.o super.o inode.o \
|
|
cache.o cache2.o filedes.o stadir.o protect.o time.o \
|
|
lock.o misc.o utility.o select.o timers.o table.o
|
|
|
|
# build local binary
|
|
install all build: $(SERVER)
|
|
$(SERVER): $(OBJ)
|
|
$(CC) -o $@ $(LDFLAGS) $(OBJ) $(LIBS)
|
|
install -S 1024w $@
|
|
|
|
# clean up local files
|
|
clean:
|
|
rm -f $(SERVER) *.o *.bak
|
|
|
|
depend:
|
|
/usr/bin/mkdep "$(CC) -E $(CPPFLAGS)" *.c > .depend
|
|
|
|
# Include generated dependencies.
|
|
include .depend
|