#include <sys/types.h>
#include <sys/param.h>
extern int PEnvopen ( dev_t, int, int, struct proc * );
extern int PEnvclose ( dev_t, int, int, struct proc * );
extern int PEnvread ( long, int, unsigned char *);
extern int PEnvwrite ( long, int, unsigned char * );
nvopen(dev, flag, devtype, pp)
dev_t dev;
int flag, devtype;
struct proc *pp;
{
return PEnvopen(dev,flag,devtype,pp);
}
nvclose(dev, flag, mode, pp)
dev_t dev;
int flag, mode;
struct proc *pp;
{
return PEnvclose(dev,flag,mode,pp);
}
nvread(dev, uio, ioflag)
dev_t dev;
struct uio *uio;
int ioflag;
{
long offset;
long size;
int c;
unsigned char cc;
long read = 0;
int error = 0;
offset = uio->uio_offset;
size = uio->uio_resid;
for (read = 0; read < size; read++, offset++) {
error = PEnvread(offset, 1, &cc);
if ( error ) {
return error;
}
c = (int)cc;
error = ureadc(c, uio);
if (error) {
return error;
}
}
return error;
}
nvwrite(dev_t dev, struct uio *uio, int ioflag)
{
register struct iovec *iov;
long offset;
long size;
int c;
unsigned char cc;
long wrote = 0;
int error = 0;
offset = uio->uio_offset;
size = uio->uio_resid;
for (wrote = 0; wrote < size; wrote++, offset++) {
c = uwritec(uio);
if (c < 0) {
return 0;
}
cc = (unsigned char)c;
error = PEnvwrite(offset, 1, &cc);
}
return error;
}