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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [fs/] [proc/] [root.c] - Blame information for rev 1275

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/*
2
 *  linux/fs/proc/root.c
3
 *
4
 *  Copyright (C) 1991, 1992 Linus Torvalds
5
 *
6
 *  proc root directory handling functions
7
 */
8
 
9
#include <asm/uaccess.h>
10
 
11
#include <linux/errno.h>
12
#include <linux/sched.h>
13
#include <linux/proc_fs.h>
14
#include <linux/stat.h>
15
#include <linux/config.h>
16
#include <linux/init.h>
17
#include <linux/module.h>
18
#include <asm/bitops.h>
19
 
20
struct proc_dir_entry *proc_net, *proc_bus, *proc_root_fs, *proc_root_driver;
21
 
22
#ifdef CONFIG_SYSCTL
23
struct proc_dir_entry *proc_sys_root;
24
#endif
25
 
26
static DECLARE_FSTYPE(proc_fs_type, "proc", proc_read_super, FS_SINGLE);
27
 
28
void __init proc_root_init(void)
29
{
30
        int err = register_filesystem(&proc_fs_type);
31
        if (err)
32
                return;
33
        proc_mnt = kern_mount(&proc_fs_type);
34
        err = PTR_ERR(proc_mnt);
35
        if (IS_ERR(proc_mnt)) {
36
                unregister_filesystem(&proc_fs_type);
37
                return;
38
        }
39
        proc_misc_init();
40
        proc_net = proc_mkdir("net", 0);
41
#ifdef CONFIG_SYSVIPC
42
        proc_mkdir("sysvipc", 0);
43
#endif
44
#ifdef CONFIG_SYSCTL
45
        proc_sys_root = proc_mkdir("sys", 0);
46
#endif
47
#if defined(CONFIG_BINFMT_MISC) || defined(CONFIG_BINFMT_MISC_MODULE)
48
        proc_mkdir("sys/fs", 0);
49
        proc_mkdir("sys/fs/binfmt_misc", 0);
50
#endif
51
        proc_root_fs = proc_mkdir("fs", 0);
52
        proc_root_driver = proc_mkdir("driver", 0);
53
#if defined(CONFIG_SUN_OPENPROMFS) || defined(CONFIG_SUN_OPENPROMFS_MODULE)
54
        /* just give it a mountpoint */
55
        proc_mkdir("openprom", 0);
56
#endif
57
        proc_tty_init();
58
#ifdef CONFIG_PROC_DEVICETREE
59
        proc_device_tree_init();
60
#endif
61
#ifdef CONFIG_PPC_ISERIES
62
        iSeries_proc_create();
63
#endif
64
#ifdef CONFIG_PPC64
65
        proc_ppc64_init();
66
#endif
67
#ifdef CONFIG_PPC_RTAS
68
        proc_rtas_init();
69
#endif
70
        proc_bus = proc_mkdir("bus", 0);
71
}
72
 
73
static struct dentry *proc_root_lookup(struct inode * dir, struct dentry * dentry)
74
{
75
        if (dir->i_ino == PROC_ROOT_INO) { /* check for safety... */
76
                int nlink = proc_root.nlink;
77
 
78
                nlink += nr_threads;
79
 
80
                dir->i_nlink = nlink;
81
        }
82
 
83
        if (!proc_lookup(dir, dentry))
84
                return NULL;
85
 
86
        return proc_pid_lookup(dir, dentry);
87
}
88
 
89
static int proc_root_readdir(struct file * filp,
90
        void * dirent, filldir_t filldir)
91
{
92
        unsigned int nr = filp->f_pos;
93
 
94
        if (nr < FIRST_PROCESS_ENTRY) {
95
                int error = proc_readdir(filp, dirent, filldir);
96
                if (error <= 0)
97
                        return error;
98
                filp->f_pos = FIRST_PROCESS_ENTRY;
99
        }
100
 
101
        return proc_pid_readdir(filp, dirent, filldir);
102
}
103
 
104
/*
105
 * The root /proc directory is special, as it has the
106
 * <pid> directories. Thus we don't use the generic
107
 * directory handling functions for that..
108
 */
109
static struct file_operations proc_root_operations = {
110
        read:            generic_read_dir,
111
        readdir:         proc_root_readdir,
112
};
113
 
114
/*
115
 * proc root can do almost nothing..
116
 */
117
static struct inode_operations proc_root_inode_operations = {
118
        lookup:         proc_root_lookup,
119
};
120
 
121
/*
122
 * This is the root "inode" in the /proc tree..
123
 */
124
struct proc_dir_entry proc_root = {
125
        low_ino:        PROC_ROOT_INO,
126
        namelen:        5,
127
        name:           "/proc",
128
        mode:           S_IFDIR | S_IRUGO | S_IXUGO,
129
        nlink:          2,
130
        proc_iops:      &proc_root_inode_operations,
131
        proc_fops:      &proc_root_operations,
132
        parent:         &proc_root,
133
};
134
 
135
#ifdef CONFIG_SYSCTL
136
EXPORT_SYMBOL(proc_sys_root);
137
#endif
138
EXPORT_SYMBOL(proc_symlink);
139
EXPORT_SYMBOL(proc_mknod);
140
EXPORT_SYMBOL(proc_mkdir);
141
EXPORT_SYMBOL(create_proc_entry);
142
EXPORT_SYMBOL(remove_proc_entry);
143
EXPORT_SYMBOL(proc_root);
144
EXPORT_SYMBOL(proc_root_fs);
145
EXPORT_SYMBOL(proc_net);
146
EXPORT_SYMBOL(proc_bus);
147
EXPORT_SYMBOL(proc_root_driver);

powered by: WebSVN 2.1.0

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