Subversion Repositories HelenOS

Rev

Rev 3022 | Rev 4156 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3022 Rev 4055
Line 25... Line 25...
25
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
 */
27
 */
28
 
28
 
29
/** @addtogroup init Init
29
/** @addtogroup init Init
30
 * @brief   Init process for testing purposes.
30
 * @brief Init process for user space environment configuration.
31
 * @{
31
 * @{
32
 */
32
 */
33
/**
33
/**
34
 * @file
34
 * @file
35
 */
35
 */
36
 
36
 
37
#include "version.h"
-
 
38
#include <stdio.h>
37
#include <stdio.h>
-
 
38
#include <unistd.h>
-
 
39
#include <ipc/ipc.h>
-
 
40
#include <vfs/vfs.h>
-
 
41
#include <bool.h>
-
 
42
#include <errno.h>
-
 
43
#include <fcntl.h>
-
 
44
#include <task.h>
-
 
45
#include <malloc.h>
-
 
46
#include <macros.h>
-
 
47
#include "init.h"
-
 
48
#include "version.h"
39
 
49
 
40
static void test_console(void)
50
static bool mount_fs(const char *fstype)
41
{
51
{
42
    int c;
52
    int rc = -1;
-
 
53
   
-
 
54
    while (rc < 0) {
-
 
55
        rc = mount(fstype, "/", "initrd", IPC_FLAG_BLOCKING);
-
 
56
       
-
 
57
        switch (rc) {
-
 
58
        case EOK:
-
 
59
            printf(NAME ": Root filesystem mounted\n");
-
 
60
            break;
-
 
61
        case EBUSY:
-
 
62
            printf(NAME ": Root filesystem already mounted\n");
-
 
63
            break;
-
 
64
        case ELIMIT:
-
 
65
            printf(NAME ": Unable to mount root filesystem\n");
-
 
66
            return false;
-
 
67
        case ENOENT:
-
 
68
            printf(NAME ": Unknown filesystem type (%s)\n", fstype);
-
 
69
            return false;
-
 
70
        }
-
 
71
    }
-
 
72
   
-
 
73
    return true;
-
 
74
}
43
 
75
 
44
    while ((c = getchar()) != EOF)
76
static void spawn(char *fname)
-
 
77
{
-
 
78
    char *argv[2];
-
 
79
   
-
 
80
    printf(NAME ": Spawning %s\n", fname);
-
 
81
   
-
 
82
    argv[0] = fname;
-
 
83
    argv[1] = NULL;
-
 
84
   
-
 
85
    if (task_spawn(fname, argv))
-
 
86
        /* Add reasonable delay to avoid
-
 
87
           intermixed klog output */
45
        putchar(c);
88
        usleep(10000);
-
 
89
    else
-
 
90
        printf(NAME ": Error spawning %s\n", fname);
46
}
91
}
47
 
92
 
48
int main(int argc, char *argv[])
93
int main(int argc, char *argv[])
49
{
94
{
-
 
95
    info_print();
-
 
96
   
-
 
97
    if (!mount_fs(STRING(RDFMT))) {
-
 
98
        printf(NAME ": Exiting\n");
-
 
99
        return -1;
-
 
100
    }
-
 
101
   
-
 
102
    // FIXME: spawn("/srv/pci");
-
 
103
    spawn("/srv/fb");
-
 
104
    spawn("/srv/kbd");
-
 
105
    spawn("/srv/console");
-
 
106
    spawn("/srv/fhc");
-
 
107
    spawn("/srv/obio");
-
 
108
   
-
 
109
    console_wait();
50
    version_print();
110
    version_print();
51
 
-
 
52
    printf("This is init\n");
-
 
53
   
111
   
54
    test_console();
112
    spawn("/app/klog");
55
 
-
 
56
    printf("\nBye.\n");
113
    spawn("/app/bdsh");
57
 
114
   
58
    return 0;
115
    return 0;
59
}
116
}
60
 
117
 
61
/** @}
118
/** @}
62
 */
119
 */
63
 
-