OpenCores
URL https://opencores.org/ocsvn/or1k_old/or1k_old/trunk

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [rc203soc/] [sw/] [uClinux/] [include/] [linux/] [proc_fs.h] - Diff between revs 1633 and 1765

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 1633 Rev 1765
#ifndef _LINUX_PROC_FS_H
#ifndef _LINUX_PROC_FS_H
#define _LINUX_PROC_FS_H
#define _LINUX_PROC_FS_H
 
 
#include <linux/fs.h>
#include <linux/fs.h>
#include <linux/malloc.h>
#include <linux/malloc.h>
 
 
/*
/*
 * The proc filesystem constants/structures
 * The proc filesystem constants/structures
 */
 */
 
 
/*
/*
 * We always define these enumerators
 * We always define these enumerators
 */
 */
 
 
enum root_directory_inos {
enum root_directory_inos {
        PROC_ROOT_INO = 1,
        PROC_ROOT_INO = 1,
        PROC_LOADAVG,
        PROC_LOADAVG,
        PROC_UPTIME,
        PROC_UPTIME,
        PROC_MEMINFO,
        PROC_MEMINFO,
        PROC_KMSG,
        PROC_KMSG,
        PROC_VERSION,
        PROC_VERSION,
        PROC_CPUINFO,
        PROC_CPUINFO,
        PROC_PCI,
        PROC_PCI,
        PROC_SELF,      /* will change inode # */
        PROC_SELF,      /* will change inode # */
        PROC_NET,
        PROC_NET,
        PROC_SCSI,
        PROC_SCSI,
        PROC_MALLOC,
        PROC_MALLOC,
        PROC_KCORE,
        PROC_KCORE,
        PROC_MODULES,
        PROC_MODULES,
        PROC_STAT,
        PROC_STAT,
        PROC_DEVICES,
        PROC_DEVICES,
        PROC_INTERRUPTS,
        PROC_INTERRUPTS,
        PROC_FILESYSTEMS,
        PROC_FILESYSTEMS,
        PROC_KSYMS,
        PROC_KSYMS,
        PROC_DMA,
        PROC_DMA,
        PROC_IOPORTS,
        PROC_IOPORTS,
#ifdef __SMP_PROF__
#ifdef __SMP_PROF__
        PROC_SMP_PROF,
        PROC_SMP_PROF,
#endif
#endif
        PROC_PROFILE, /* whether enabled or not */
        PROC_PROFILE, /* whether enabled or not */
        PROC_CMDLINE,
        PROC_CMDLINE,
        PROC_SYS,
        PROC_SYS,
        PROC_MTAB,
        PROC_MTAB,
        PROC_MD,
        PROC_MD,
        PROC_RTC,
        PROC_RTC,
        PROC_LOCKS,
        PROC_LOCKS,
        PROC_SERIAL
        PROC_SERIAL
};
};
 
 
enum pid_directory_inos {
enum pid_directory_inos {
        PROC_PID_INO = 2,
        PROC_PID_INO = 2,
        PROC_PID_STATUS,
        PROC_PID_STATUS,
        PROC_PID_MEM,
        PROC_PID_MEM,
        PROC_PID_CWD,
        PROC_PID_CWD,
        PROC_PID_ROOT,
        PROC_PID_ROOT,
        PROC_PID_EXE,
        PROC_PID_EXE,
        PROC_PID_FD,
        PROC_PID_FD,
        PROC_PID_ENVIRON,
        PROC_PID_ENVIRON,
        PROC_PID_CMDLINE,
        PROC_PID_CMDLINE,
        PROC_PID_STAT,
        PROC_PID_STAT,
#ifndef NO_MM
#ifndef NO_MM
        PROC_PID_STATM,
        PROC_PID_STATM,
        PROC_PID_MAPS
        PROC_PID_MAPS
#endif /* !NO_MM */
#endif /* !NO_MM */
};
};
 
 
enum pid_subdirectory_inos {
enum pid_subdirectory_inos {
        PROC_PID_FD_DIR = 1
        PROC_PID_FD_DIR = 1
};
};
 
 
enum net_directory_inos {
enum net_directory_inos {
        PROC_NET_UNIX = 128,
        PROC_NET_UNIX = 128,
        PROC_NET_ARP,
        PROC_NET_ARP,
        PROC_NET_ROUTE,
        PROC_NET_ROUTE,
        PROC_NET_DEV,
        PROC_NET_DEV,
        PROC_NET_RAW,
        PROC_NET_RAW,
        PROC_NET_TCP,
        PROC_NET_TCP,
        PROC_NET_UDP,
        PROC_NET_UDP,
        PROC_NET_SNMP,
        PROC_NET_SNMP,
        PROC_NET_RARP,
        PROC_NET_RARP,
        PROC_NET_IGMP,
        PROC_NET_IGMP,
        PROC_NET_IPMR_VIF,
        PROC_NET_IPMR_VIF,
        PROC_NET_IPMR_MFC,
        PROC_NET_IPMR_MFC,
        PROC_NET_IPFWFWD,
        PROC_NET_IPFWFWD,
        PROC_NET_IPFWIN,
        PROC_NET_IPFWIN,
        PROC_NET_IPFWOUT,
        PROC_NET_IPFWOUT,
        PROC_NET_IPACCT,
        PROC_NET_IPACCT,
        PROC_NET_IPMSQHST,
        PROC_NET_IPMSQHST,
        PROC_NET_WIRELESS,
        PROC_NET_WIRELESS,
        PROC_NET_IPX_INTERFACE,
        PROC_NET_IPX_INTERFACE,
        PROC_NET_IPX_ROUTE,
        PROC_NET_IPX_ROUTE,
        PROC_NET_IPX,
        PROC_NET_IPX,
        PROC_NET_ATALK,
        PROC_NET_ATALK,
        PROC_NET_AT_ROUTE,
        PROC_NET_AT_ROUTE,
        PROC_NET_ATIF,
        PROC_NET_ATIF,
        PROC_NET_AX25_ROUTE,
        PROC_NET_AX25_ROUTE,
        PROC_NET_AX25,
        PROC_NET_AX25,
        PROC_NET_AX25_CALLS,
        PROC_NET_AX25_CALLS,
        PROC_NET_NR_NODES,
        PROC_NET_NR_NODES,
        PROC_NET_NR_NEIGH,
        PROC_NET_NR_NEIGH,
        PROC_NET_NR,
        PROC_NET_NR,
        PROC_NET_SOCKSTAT,
        PROC_NET_SOCKSTAT,
        PROC_NET_RTCACHE,
        PROC_NET_RTCACHE,
        PROC_NET_AX25_BPQETHER,
        PROC_NET_AX25_BPQETHER,
        PROC_NET_ALIAS_TYPES,
        PROC_NET_ALIAS_TYPES,
        PROC_NET_ALIASES,
        PROC_NET_ALIASES,
        PROC_NET_IP_MASQ_APP,
        PROC_NET_IP_MASQ_APP,
        PROC_NET_STRIP_STATUS,
        PROC_NET_STRIP_STATUS,
        PROC_NET_STRIP_TRACE,
        PROC_NET_STRIP_TRACE,
        PROC_NET_IPAUTOFW,
        PROC_NET_IPAUTOFW,
        PROC_NET_IPPORTFW,
        PROC_NET_IPPORTFW,
        PROC_NET_RS_NODES,
        PROC_NET_RS_NODES,
        PROC_NET_RS_NEIGH,
        PROC_NET_RS_NEIGH,
        PROC_NET_RS_ROUTES,
        PROC_NET_RS_ROUTES,
        PROC_NET_RS,
        PROC_NET_RS,
        PROC_NET_Z8530,
        PROC_NET_Z8530,
        PROC_NET_LAST
        PROC_NET_LAST
};
};
 
 
enum scsi_directory_inos {
enum scsi_directory_inos {
        PROC_SCSI_SCSI = 256,
        PROC_SCSI_SCSI = 256,
        PROC_SCSI_ADVANSYS,
        PROC_SCSI_ADVANSYS,
        PROC_SCSI_EATA,
        PROC_SCSI_EATA,
        PROC_SCSI_EATA_PIO,
        PROC_SCSI_EATA_PIO,
        PROC_SCSI_AHA152X,
        PROC_SCSI_AHA152X,
        PROC_SCSI_AHA1542,
        PROC_SCSI_AHA1542,
        PROC_SCSI_AHA1740,
        PROC_SCSI_AHA1740,
        PROC_SCSI_AIC7XXX,
        PROC_SCSI_AIC7XXX,
        PROC_SCSI_BUSLOGIC,
        PROC_SCSI_BUSLOGIC,
        PROC_SCSI_U14_34F,
        PROC_SCSI_U14_34F,
        PROC_SCSI_FDOMAIN,
        PROC_SCSI_FDOMAIN,
        PROC_SCSI_GENERIC_NCR5380,
        PROC_SCSI_GENERIC_NCR5380,
        PROC_SCSI_IN2000,
        PROC_SCSI_IN2000,
        PROC_SCSI_PAS16,
        PROC_SCSI_PAS16,
        PROC_SCSI_QLOGICFAS,
        PROC_SCSI_QLOGICFAS,
        PROC_SCSI_QLOGICISP,
        PROC_SCSI_QLOGICISP,
        PROC_SCSI_SEAGATE,
        PROC_SCSI_SEAGATE,
        PROC_SCSI_T128,
        PROC_SCSI_T128,
        PROC_SCSI_DC390T,
        PROC_SCSI_DC390T,
        PROC_SCSI_NCR53C7xx,
        PROC_SCSI_NCR53C7xx,
        PROC_SCSI_NCR53C8XX,
        PROC_SCSI_NCR53C8XX,
        PROC_SCSI_ULTRASTOR,
        PROC_SCSI_ULTRASTOR,
        PROC_SCSI_7000FASST,
        PROC_SCSI_7000FASST,
        PROC_SCSI_EATA2X,
        PROC_SCSI_EATA2X,
        PROC_SCSI_AM53C974,
        PROC_SCSI_AM53C974,
        PROC_SCSI_SSC,
        PROC_SCSI_SSC,
        PROC_SCSI_NCR53C406A,
        PROC_SCSI_NCR53C406A,
        PROC_SCSI_SYM53C416,
        PROC_SCSI_SYM53C416,
        PROC_SCSI_MEGARAID,
        PROC_SCSI_MEGARAID,
        PROC_SCSI_INIA100,
        PROC_SCSI_INIA100,
        PROC_SCSI_PPA,
        PROC_SCSI_PPA,
        PROC_SCSI_ATP870U,
        PROC_SCSI_ATP870U,
        PROC_SCSI_ESP,
        PROC_SCSI_ESP,
        PROC_SCSI_A3000,
        PROC_SCSI_A3000,
        PROC_SCSI_A2091,
        PROC_SCSI_A2091,
        PROC_SCSI_GVP11,
        PROC_SCSI_GVP11,
        PROC_SCSI_ATARI,
        PROC_SCSI_ATARI,
        PROC_SCSI_GDTH,
        PROC_SCSI_GDTH,
        PROC_SCSI_INI9100U,
        PROC_SCSI_INI9100U,
        PROC_SCSI_PCI2000,
        PROC_SCSI_PCI2000,
        PROC_SCSI_PCI2220I,
        PROC_SCSI_PCI2220I,
        PROC_SCSI_PSI240I,
        PROC_SCSI_PSI240I,
        PROC_SCSI_IDESCSI,
        PROC_SCSI_IDESCSI,
        PROC_SCSI_SCSI_DEBUG,
        PROC_SCSI_SCSI_DEBUG,
        PROC_SCSI_NOT_PRESENT,
        PROC_SCSI_NOT_PRESENT,
        PROC_SCSI_FILE,                        /* I'm assuming here that we */
        PROC_SCSI_FILE,                        /* I'm assuming here that we */
        PROC_SCSI_LAST = (PROC_SCSI_FILE + 16) /* won't ever see more than */
        PROC_SCSI_LAST = (PROC_SCSI_FILE + 16) /* won't ever see more than */
};                                             /* 16 HBAs in one machine   */
};                                             /* 16 HBAs in one machine   */
 
 
/* Finally, the dynamically allocatable proc entries are reserved: */
/* Finally, the dynamically allocatable proc entries are reserved: */
 
 
#define PROC_DYNAMIC_FIRST 4096
#define PROC_DYNAMIC_FIRST 4096
#define PROC_NDYNAMIC      4096
#define PROC_NDYNAMIC      4096
 
 
#define PROC_SUPER_MAGIC 0x9fa0
#define PROC_SUPER_MAGIC 0x9fa0
 
 
/*
/*
 * This is not completely implemented yet. The idea is to
 * This is not completely implemented yet. The idea is to
 * create a in-memory tree (like the actual /proc filesystem
 * create a in-memory tree (like the actual /proc filesystem
 * tree) of these proc_dir_entries, so that we can dynamically
 * tree) of these proc_dir_entries, so that we can dynamically
 * add new files to /proc.
 * add new files to /proc.
 *
 *
 * The "next" pointer creates a linked list of one /proc directory,
 * The "next" pointer creates a linked list of one /proc directory,
 * while parent/subdir create the directory structure (every
 * while parent/subdir create the directory structure (every
 * /proc file has a parent, but "subdir" is NULL for all
 * /proc file has a parent, but "subdir" is NULL for all
 * non-directory entries).
 * non-directory entries).
 *
 *
 * "get_info" is called at "read", while "fill_inode" is used to
 * "get_info" is called at "read", while "fill_inode" is used to
 * fill in file type/protection/owner information specific to the
 * fill in file type/protection/owner information specific to the
 * particular /proc file.
 * particular /proc file.
 */
 */
struct proc_dir_entry {
struct proc_dir_entry {
        unsigned short low_ino;
        unsigned short low_ino;
        unsigned short namelen;
        unsigned short namelen;
        const char *name;
        const char *name;
        mode_t mode;
        mode_t mode;
        nlink_t nlink;
        nlink_t nlink;
        uid_t uid;
        uid_t uid;
        gid_t gid;
        gid_t gid;
        unsigned long size;
        unsigned long size;
        struct inode_operations * ops;
        struct inode_operations * ops;
        int (*get_info)(char *, char **, off_t, int, int);
        int (*get_info)(char *, char **, off_t, int, int);
        void (*fill_inode)(struct inode *);
        void (*fill_inode)(struct inode *);
        struct proc_dir_entry *next, *parent, *subdir;
        struct proc_dir_entry *next, *parent, *subdir;
        void *data;
        void *data;
};
};
 
 
extern int (* dispatch_scsi_info_ptr) (int ino, char *buffer, char **start,
extern int (* dispatch_scsi_info_ptr) (int ino, char *buffer, char **start,
                                off_t offset, int length, int inout);
                                off_t offset, int length, int inout);
 
 
extern struct proc_dir_entry proc_root;
extern struct proc_dir_entry proc_root;
extern struct proc_dir_entry proc_net;
extern struct proc_dir_entry proc_net;
extern struct proc_dir_entry proc_scsi;
extern struct proc_dir_entry proc_scsi;
extern struct proc_dir_entry proc_sys;
extern struct proc_dir_entry proc_sys;
extern struct proc_dir_entry proc_pid;
extern struct proc_dir_entry proc_pid;
extern struct proc_dir_entry proc_pid_fd;
extern struct proc_dir_entry proc_pid_fd;
 
 
extern struct inode_operations proc_scsi_inode_operations;
extern struct inode_operations proc_scsi_inode_operations;
 
 
extern void proc_root_init(void);
extern void proc_root_init(void);
extern void proc_base_init(void);
extern void proc_base_init(void);
extern void proc_net_init(void);
extern void proc_net_init(void);
 
 
extern int proc_register(struct proc_dir_entry *, struct proc_dir_entry *);
extern int proc_register(struct proc_dir_entry *, struct proc_dir_entry *);
extern int proc_register_dynamic(struct proc_dir_entry *,
extern int proc_register_dynamic(struct proc_dir_entry *,
                                 struct proc_dir_entry *);
                                 struct proc_dir_entry *);
extern int proc_unregister(struct proc_dir_entry *, int);
extern int proc_unregister(struct proc_dir_entry *, int);
 
 
static inline int proc_net_register(struct proc_dir_entry * x)
static inline int proc_net_register(struct proc_dir_entry * x)
{
{
        return proc_register(&proc_net, x);
        return proc_register(&proc_net, x);
}
}
 
 
static inline int proc_net_unregister(int x)
static inline int proc_net_unregister(int x)
{
{
        return proc_unregister(&proc_net, x);
        return proc_unregister(&proc_net, x);
}
}
 
 
static inline int proc_scsi_register(struct proc_dir_entry *driver,
static inline int proc_scsi_register(struct proc_dir_entry *driver,
                                     struct proc_dir_entry *x)
                                     struct proc_dir_entry *x)
{
{
    x->ops = &proc_scsi_inode_operations;
    x->ops = &proc_scsi_inode_operations;
    if(x->low_ino < PROC_SCSI_FILE){
    if(x->low_ino < PROC_SCSI_FILE){
        return(proc_register(&proc_scsi, x));
        return(proc_register(&proc_scsi, x));
    }else{
    }else{
        return(proc_register(driver, x));
        return(proc_register(driver, x));
    }
    }
}
}
 
 
static inline int proc_scsi_unregister(struct proc_dir_entry *driver, int x)
static inline int proc_scsi_unregister(struct proc_dir_entry *driver, int x)
{
{
    extern void scsi_init_free(char *ptr, unsigned int size);
    extern void scsi_init_free(char *ptr, unsigned int size);
 
 
    if(x <= PROC_SCSI_FILE)
    if(x <= PROC_SCSI_FILE)
        return(proc_unregister(&proc_scsi, x));
        return(proc_unregister(&proc_scsi, x));
    else {
    else {
        struct proc_dir_entry **p = &driver->subdir, *dp;
        struct proc_dir_entry **p = &driver->subdir, *dp;
        int ret;
        int ret;
 
 
        while ((dp = *p) != NULL) {
        while ((dp = *p) != NULL) {
                if (dp->low_ino == x)
                if (dp->low_ino == x)
                    break;
                    break;
                p = &dp->next;
                p = &dp->next;
        }
        }
        ret = proc_unregister(driver, x);
        ret = proc_unregister(driver, x);
        scsi_init_free((char *) dp, sizeof(struct proc_dir_entry) + 4);
        scsi_init_free((char *) dp, sizeof(struct proc_dir_entry) + 4);
        return(ret);
        return(ret);
    }
    }
}
}
 
 
extern struct super_block *proc_read_super(struct super_block *,void *,int);
extern struct super_block *proc_read_super(struct super_block *,void *,int);
extern int init_proc_fs(void);
extern int init_proc_fs(void);
extern struct inode * proc_get_inode(struct super_block *, int, struct proc_dir_entry *);
extern struct inode * proc_get_inode(struct super_block *, int, struct proc_dir_entry *);
extern void proc_statfs(struct super_block *, struct statfs *, int);
extern void proc_statfs(struct super_block *, struct statfs *, int);
extern void proc_read_inode(struct inode *);
extern void proc_read_inode(struct inode *);
extern void proc_write_inode(struct inode *);
extern void proc_write_inode(struct inode *);
extern int proc_match(int, const char *, struct proc_dir_entry *);
extern int proc_match(int, const char *, struct proc_dir_entry *);
 
 
/*
/*
 * These are generic /proc routines that use the internal
 * These are generic /proc routines that use the internal
 * "struct proc_dir_entry" tree to traverse the filesystem.
 * "struct proc_dir_entry" tree to traverse the filesystem.
 *
 *
 * The /proc root directory has extended versions to take care
 * The /proc root directory has extended versions to take care
 * of the /proc/<pid> subdirectories.
 * of the /proc/<pid> subdirectories.
 */
 */
extern int proc_readdir(struct inode *, struct file *, void *, filldir_t);
extern int proc_readdir(struct inode *, struct file *, void *, filldir_t);
extern int proc_lookup(struct inode *, const char *, int, struct inode **);
extern int proc_lookup(struct inode *, const char *, int, struct inode **);
 
 
extern struct inode_operations proc_dir_inode_operations;
extern struct inode_operations proc_dir_inode_operations;
extern struct inode_operations proc_net_inode_operations;
extern struct inode_operations proc_net_inode_operations;
extern struct inode_operations proc_netdir_inode_operations;
extern struct inode_operations proc_netdir_inode_operations;
extern struct inode_operations proc_scsi_inode_operations;
extern struct inode_operations proc_scsi_inode_operations;
extern struct inode_operations proc_mem_inode_operations;
extern struct inode_operations proc_mem_inode_operations;
extern struct inode_operations proc_sys_inode_operations;
extern struct inode_operations proc_sys_inode_operations;
extern struct inode_operations proc_array_inode_operations;
extern struct inode_operations proc_array_inode_operations;
extern struct inode_operations proc_arraylong_inode_operations;
extern struct inode_operations proc_arraylong_inode_operations;
extern struct inode_operations proc_kcore_inode_operations;
extern struct inode_operations proc_kcore_inode_operations;
extern struct inode_operations proc_profile_inode_operations;
extern struct inode_operations proc_profile_inode_operations;
extern struct inode_operations proc_kmsg_inode_operations;
extern struct inode_operations proc_kmsg_inode_operations;
extern struct inode_operations proc_link_inode_operations;
extern struct inode_operations proc_link_inode_operations;
extern struct inode_operations proc_fd_inode_operations;
extern struct inode_operations proc_fd_inode_operations;
 
 
#endif
#endif
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.