Subversion Repositories HelenOS

Rev

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

Rev 2022 Rev 2028
Line 37... Line 37...
37
#define READERS     50
37
#define READERS     50
38
#define WRITERS     50
38
#define WRITERS     50
39
 
39
 
40
static rwlock_t rwlock;
40
static rwlock_t rwlock;
41
 
41
 
42
static void writer(void *arg);
-
 
43
static void failed(void);
-
 
44
 
-
 
45
static void writer(void *arg)
42
static void writer(void *arg)
46
{
43
{
47
 
44
 
48
    thread_detach(THREAD);
45
    thread_detach(THREAD);
49
 
46
 
Line 56... Line 53...
56
    rwlock_read_lock(&rwlock);
53
    rwlock_read_lock(&rwlock);
57
    rwlock_read_unlock(&rwlock);   
54
    rwlock_read_unlock(&rwlock);   
58
    printf("Test passed.\n");
55
    printf("Test passed.\n");
59
}
56
}
60
 
57
 
61
static void failed()
-
 
62
{
-
 
63
    printf("Test failed prematurely.\n");
-
 
64
    thread_exit();
-
 
65
}
-
 
66
 
-
 
67
void test_rwlock2(void)
58
char * test_rwlock2(void)
68
{
59
{
69
    thread_t *thrd;
60
    thread_t *thrd;
70
   
61
   
71
    printf("Read/write locks test #2\n");
-
 
72
   
-
 
73
    rwlock_initialize(&rwlock);
62
    rwlock_initialize(&rwlock);
74
 
63
 
75
    rwlock_read_lock(&rwlock);
64
    rwlock_read_lock(&rwlock);
76
    rwlock_read_lock(&rwlock);
65
    rwlock_read_lock(&rwlock);
77
    rwlock_read_lock(&rwlock);
66
    rwlock_read_lock(&rwlock);
Line 79... Line 68...
79
   
68
   
80
    thrd = thread_create(writer, NULL, TASK, 0, "writer");
69
    thrd = thread_create(writer, NULL, TASK, 0, "writer");
81
    if (thrd)
70
    if (thrd)
82
        thread_ready(thrd);
71
        thread_ready(thrd);
83
    else
72
    else
84
        failed();
73
        return "Could not create thread";
85
 
-
 
86
 
74
 
87
    thread_sleep(1);
75
    thread_sleep(1);
88
   
76
   
89
    rwlock_read_unlock(&rwlock);
77
    rwlock_read_unlock(&rwlock);
90
    rwlock_read_unlock(&rwlock);
78
    rwlock_read_unlock(&rwlock);
91
    rwlock_read_unlock(&rwlock);
79
    rwlock_read_unlock(&rwlock);
92
    rwlock_read_unlock(&rwlock);   
80
    rwlock_read_unlock(&rwlock);
93
 
81
   
-
 
82
    return NULL;
94
}
83
}