Remove PDX and NPDENTRIES
[akaros.git] / kern / include / ns.h
index 36dec8f..797d895 100644 (file)
@@ -243,6 +243,7 @@ enum {
        Tmax,
 };
 
+void init_empty_dir(struct dir *d);
 unsigned int convM2S(uint8_t * unused_uint8_p_t, unsigned int unused_int,
                                         struct fcall *);
 unsigned int convS2M(struct fcall *, uint8_t * unused_uint8_p_t, unsigned int);
@@ -300,6 +301,7 @@ enum {
        Amount,                                         /* to be mounted or mounted upon */
        Acreate,                                        /* is to be created */
        Aremove,                                        /* will be removed by caller */
+       Acreatechan,                                    /* return a chan for a create request. for sysrename. */
 
        COPEN = 0x0001,                         /* for i/o */
        CMSG = 0x0002,  /* the message channel for a mount */
@@ -383,10 +385,15 @@ struct chan {
                void *aux;
                char tag[4];                    /* for iproute */
        };
+       /* mountpoint, as discovered during walk.
+        * Used for rename at present.
+        */
+       struct chan *mountpoint;
        struct chan *mchan;                     /* channel to mounted server */
        struct qid mqid;                        /* qid of root of mount point */
        struct cname *name;
-       /* hack for reads to try to get them right. */
+       /* hack for dir reads to try to get them right. */
+       int ateof;
        void *buf;
        int bufused;
 };
@@ -420,8 +427,8 @@ struct dev {
        void (*power) (int);            /* power mgt: power(1) → on, power (0) → off */
 //  int (*config)( int unused_int, char *unused_char_p_t, DevConf*);
        char *(*chaninfo) (struct chan *, char *, size_t);
-       /* we need to be aligned, i think to 32 bytes, for the linker tables. */
-} __attribute__ ((aligned(32)));
+       /* we need to be aligned, we think to 64 bytes, for the linker tables. */
+} __attribute__ ((aligned(64)));
 
 struct dirtab {
        char name[KNAMELEN];
@@ -573,7 +580,7 @@ enum {
        PRINTSIZE = 256,
        NUMSIZE = 12,   /* size of formatted number */
        MB = (1024 * 1024),
-       READSTR = 1000, /* temporary buffer size for device reads */
+       READSTR = 2000, /* temporary buffer size for device reads */
 };
 
 extern struct dev devtab[];
@@ -643,6 +650,7 @@ void closemount(struct mount *);
 void closepgrp(struct pgrp *);
 void closesigs(struct skeyset *);
 void cmderror(struct cmdbuf *, char *unused_char_p_t);
+void debugcmd(struct cmdbuf *cb);
 struct mhead *newmhead(struct chan *from);
 int cmount(struct chan *, struct chan *, int unused_int, char *unused_char_p_t);
 void cnameclose(struct cname *);
@@ -865,11 +873,9 @@ long unionread(struct chan *, void *, long);
 void unlock(spinlock_t *);
 void userinit(void);
 uint32_t userpc(void);
-void validname(char *unused_char_p_t, int);
-void validstat(uint8_t * unused_uint8_p_t, int);
-void validwstatname(char *unused_char_p_t);
+void validname(char *, int);
+void validwstatname(char *);
 int walk(struct chan **, char **unused_char_pp_t, int unused_int, int, int *);
-void werrstr(char *unused_char_p_t, ...);
 void *xalloc(uint32_t);
 void *xallocz(uint32_t, int);
 void xfree(void *);
@@ -971,7 +977,7 @@ void cmderror(struct cmdbuf *cb, char *s);
 struct cmdtab *lookupcmd(struct cmdbuf *cb, struct cmdtab *ctab, int nctab);
 
 /* kern/src/ns/sysfile.c */
-int newfd(struct chan *c);
+int newfd(struct chan *c, bool oflags);
 struct chan *fdtochan(struct fgrp *f, int fd, int mode, int chkmnt, int iref);
 long kchanio(void *vc, void *buf, int n, int mode);
 int openmode(uint32_t o);
@@ -981,6 +987,8 @@ int grpclose(struct fgrp *f, int fd);
 int sysclose(int fd);
 int syscreate(char *path, int mode, uint32_t perm);
 int sysdup(int old, int new);
+int sys_dup_to(struct proc *from_proc, unsigned int from_fd,
+               struct proc *to_proc, unsigned int to_fd);
 int sysfstat(int fd, uint8_t*, int n);
 int sysfstatakaros(int fd, struct kstat *);
 char *sysfd2path(int fd);
@@ -994,11 +1002,12 @@ int sysmount(int fd, int afd, char *old, int flags, char *spec);
 int sysunmount(char *old, char *new);
 int sysopen(char *path, int mode);
 long unionread(struct chan *c, void *va, long n);
+void read_exactly_n(struct chan *c, void *vp, long n);
 long sysread(int fd, void *va, long n);
 long syspread(int fd, void *va, long n, int64_t off);
 int sysremove(char *path);
 int64_t sysseek(int fd, int64_t off, int whence);
-void validstat(uint8_t * s, int n);
+void validstat(uint8_t * s, int n, int slashok);
 int sysstat(char *path, uint8_t*, int n);
 int sysstatakaros(char *path, struct kstat *);
 long syswrite(int fd, void *va, long n);
@@ -1022,6 +1031,11 @@ int fd_setfl(int fd, int flags);
 /* kern/drivers/dev/srv.c */
 char *srvname(struct chan *c);
 
+/* kern/src/eipconv.c. Put them here or face real include hell. */
+void printqid(void (*putch) (int, void **), void **putdat, struct qid *q);
+void printcname(void (*putch) (int, void **), void **putdat, struct cname *c);
+void printchan(void (*putch) (int, void **), void **putdat, struct chan *c);
+
 static inline int abs(int a)
 {
        if (a < 0)