Changeset 1cef26f in mainline


Ignore:
Timestamp:
2006-03-22T22:30:40Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
29a9f62
Parents:
7e2988c
Message:

Basic futex support for userspace.

Files:
2 added
2 edited

Legend:

Unmodified
Added
Removed
  • init/init.c

    r7e2988c r1cef26f  
    3434#include <ns.h>
    3535#include <thread.h>
     36#include <futex.h>
    3637
    3738int a;
     39atomic_t ftx;
    3840
    3941extern void utest(void *arg);
     
    4143{
    4244        printf("Uspace thread started.\n");
     45        if (futex_down(&ftx) < 0)
     46                printf("Futex failed.\n");
     47        if (futex_up(&ftx) < 0)
     48                printf("Futex failed.\n");
     49               
     50        printf("%s in good condition.\n", __FUNCTION__);
     51       
    4352        for (;;)
    4453                ;
     
    244253}
    245254
     255
     256
    246257int main(int argc, char *argv[])
    247258{
     
    256267//      test_hangup();
    257268//      test_slam();
     269       
     270        futex_initialize(&ftx, 1);
     271        if (futex_down(&ftx) < 0)
     272                printf("Futex failed.\n");
     273        if (futex_up(&ftx) < 0)
     274                printf("Futex failed.\n");
     275
     276        if (futex_down(&ftx) < 0)
     277                printf("Futex failed.\n");
    258278
    259279        if ((tid = thread_create(utest, NULL, "utest") != -1)) {
    260280                printf("Created thread tid=%d\n", tid);
    261281        }
     282
     283        int i;
     284       
     285        for (i = 0; i < 10000000; i++)
     286                ;
     287               
     288        if (futex_up(&ftx) < 0)
     289                printf("Futex failed.\n");
     290
     291        printf("Main thread exiting.\n");
    262292        return 0;
    263293}
  • libc/Makefile

    r7e2988c r1cef26f  
    4747        generic/string.c \
    4848        generic/thread.c \
     49        generic/futex.c \
    4950        generic/io/io.c \
    5051        generic/io/print.c \
Note: See TracChangeset for help on using the changeset viewer.