NetBSD/sys/coda/00READ

73 lines
2.5 KiB
Plaintext

What needs to be done to port Coda to a different Architecture.
I. Fixes for the Coda applications
Coda is a package under net/coda_*; so it should be easy enough to
build. But there are a few specific files that need to be changed
first. Of course, setting it up and using it is harder.
1. coda/lib-src/mlwp/process.s
Coda coda/mlwp/ implements light weight user threads. The process.s
file contains stack switching code. It needs to be recoded for your
architecture. There is some old dead code in the file that you might
be able to resurrect for other platforms. At present, only the x86
case, ns32k case and arm32 case (and possibly linux sparc) work.
2. coda/coda-src/venus/fso_cfscalls2.cc
The Coda file system expands the strings @cputype and @sys in file
names in a platform specific way. In fso_cfscalls2.cc, under a
__NetBSD__ conditional, there is platform conditional that defines:
static char cputype []
static char systype []
Add the values for these strings under a conditional for your
architecture.
II. Fixes for the Coda kernel
The coda/ directory in the kernel is machine independent. The various
pieces of glue code, viz. conf/files, sys/vnode.h, are in place. You
do have a few platform changes:
1. src/sys/arch/xxx/conf/GENERIC or others
It would be best to take the few lines that define Coda and its communications
pseudo device from the x86 GENERIC and put them into your platform GENERIC.
They should look something like:
file-system CODA # Coda File System; also needs vcoda (below)
# a pseudo device needed for Coda # also needs CODA (above)
pseudo-device vcoda 4 # coda minicache <-> venus comm.
2. src/sys/arch/xxx/xxx/conf.c
Coda needs a pseudodevice, vc_nb_, to communicate between the kernel and the
out of kernel client program, venus. sys/conf.h defines it:
#define cdev_vc_nb_init \...
You must include this device in your platform conf.c
By way of example for the x86, you add:
#include "vcoda.h"
cdev_decl(vc_nb_);
to the "header" area and
cdev_vc_nb_init(NVCODA,vc_nb_), /* 60: coda file system psdev */
to the cdev switch.
3. src/etc/xxx/MAKEDEV
Something like the code below should work; The chr device
that is appropriate for your platform should be used instead of 60.
cfs0)
name=cfs; unit=${i#cfs}; chr=60
rm -f $name$unit
mknod $name$unit c $chr $unit
chown root.wheel $name$unit
;;
We only support one device currently, but historically it is cfs0.
III. More?
There still may be a couple of other problems. If so, let us know.