73 lines
2.5 KiB
Plaintext
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.
|