Subversion Repositories HelenOS

Rev

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

Rev 4401 Rev 4416
Line 117... Line 117...
117
 *
117
 *
118
 *
118
 *
119
 */
119
 */
120
char * test_devmap1(bool quiet)
120
char * test_devmap1(bool quiet)
121
{
121
{
122
    int driver_phone;
122
    const char *retval = NULL;
123
    int dev1_handle;
-
 
124
    int dev2_handle;
-
 
125
    int dev3_handle;
-
 
126
    int handle;
-
 
127
    int rc;
-
 
128
 
123
   
129
    /* Register new driver */
124
    /* Register new driver */
130
    driver_phone = devmap_driver_register("TestDriver",
125
    int rc = devmap_driver_register("TestDriver", driver_client_connection);
131
        driver_client_connection);
-
 
132
 
-
 
133
    if (driver_phone < 0) {
126
    if (rc < 0) {
134
        return "Error: Cannot register driver.\n"; 
127
        retval = "Error: Cannot register driver.\n";
-
 
128
        goto out;
135
    }
129
    }
136
 
130
   
137
    /* Register new device dev1. */
131
    /* Register new device dev1. */
-
 
132
    dev_handle_t dev1_handle;
138
    rc = devmap_device_register(driver_phone, TEST_DEVICE1, &dev1_handle);
133
    rc = devmap_device_register(TEST_DEVICE1, &dev1_handle);
139
    if (rc != EOK) {
134
    if (rc != EOK) {
140
        ipc_hangup(driver_phone);
-
 
141
        return "Error: cannot register device.\n";
135
        retval = "Error: cannot register device.\n";
-
 
136
        goto out;
142
    }
137
    }
143
 
138
   
144
    /*
139
    /*
145
     * Get handle for dev2 (Should fail unless device is already registered
140
     * Get handle for dev2 (Should fail unless device is already registered
146
     * by someone else).
141
     * by someone else).
147
     */
142
     */
-
 
143
    dev_handle_t handle;
148
    rc = devmap_device_get_handle(TEST_DEVICE2, &handle, 0);
144
    rc = devmap_device_get_handle(TEST_DEVICE2, &handle, 0);
149
    if (rc == EOK) {
145
    if (rc == EOK) {
150
        ipc_hangup(driver_phone);
-
 
151
        return "Error: got handle for dev2 before it was registered.\n";
146
        retval = "Error: got handle for dev2 before it was registered.\n";
-
 
147
        goto out;
152
    }
148
    }
153
 
149
   
154
    /* Register new device dev2. */
150
    /* Register new device dev2. */
-
 
151
    dev_handle_t dev2_handle;
155
    rc = devmap_device_register(driver_phone, TEST_DEVICE2, &dev2_handle);
152
    rc = devmap_device_register(TEST_DEVICE2, &dev2_handle);
156
    if (rc != EOK) {
153
    if (rc != EOK) {
157
        ipc_hangup(driver_phone);
-
 
158
        return "Error: cannot register device dev2.\n";
154
        retval = "Error: cannot register device dev2.\n";
-
 
155
        goto out;
159
    }
156
    }
160
 
157
   
161
    /* Register device dev1 again. */
158
    /* Register device dev1 again. */
-
 
159
    dev_handle_t dev3_handle;
162
    rc = devmap_device_register(driver_phone, TEST_DEVICE1, &dev3_handle);
160
    rc = devmap_device_register(TEST_DEVICE1, &dev3_handle);
163
    if (rc == EOK) {
161
    if (rc == EOK) {
164
        return "Error: dev1 registered twice.\n";
162
        retval = "Error: dev1 registered twice.\n";
-
 
163
        goto out;
165
    }
164
    }
166
 
165
   
167
    /* Get handle for dev1. */
166
    /* Get handle for dev1. */
168
    rc = devmap_device_get_handle(TEST_DEVICE1, &handle, 0);
167
    rc = devmap_device_get_handle(TEST_DEVICE1, &handle, 0);
169
    if (rc != EOK) {
168
    if (rc != EOK) {
170
        ipc_hangup(driver_phone);
-
 
171
        return "Error: cannot get handle for 'DEVMAP_DEVICE1'.\n";
169
        retval = "Error: cannot get handle for 'DEVMAP_DEVICE1'.\n";
-
 
170
        goto out;
172
    }
171
    }
173
 
172
   
174
    if (handle != dev1_handle) {
173
    if (handle != dev1_handle) {
175
        ipc_hangup(driver_phone);
-
 
176
        return "Error: cannot get handle for 'DEVMAP_DEVICE1'.\n";
174
        retval = "Error: cannot get handle for 'DEVMAP_DEVICE1'.\n";
-
 
175
        goto out;
177
    }
176
    }
178
 
177
   
179
    if (device_client(dev1_handle) != EOK) {
178
    if (device_client(dev1_handle) != EOK) {
180
        ipc_hangup(driver_phone);
-
 
181
        return "Error: failed client test for 'DEVMAP_DEVICE1'.\n";
179
        retval = "Error: failed client test for 'DEVMAP_DEVICE1'.\n";
-
 
180
        goto out;
182
    }
181
    }
183
 
182
   
184
    /* TODO: */
-
 
185
 
183
out:
-
 
184
    devmap_hangup_phone(DEVMAP_DRIVER);
186
    ipc_hangup(driver_phone);
185
    devmap_hangup_phone(DEVMAP_CLIENT);
187
 
186
   
188
    return NULL;
187
    return NULL;
189
}
188
}
190
 
189
 
191
char *test_devmap2(bool quiet)
190
char *test_devmap2(bool quiet)
192
{
191
{