Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/io/vprintf.c

    re08a733 r369a5f8  
    3737#include <unistd.h>
    3838#include <io/printf_core.h>
    39 #include <fibril_synch.h>
     39#include <futex.h>
    4040#include <async.h>
    4141#include <str.h>
    4242
    43 static FIBRIL_MUTEX_INITIALIZE(printf_mutex);
     43static atomic_t printf_futex = FUTEX_INITIALIZER;
    4444
    4545static int vprintf_str_write(const char *str, size_t size, void *stream)
     
    8585         * Prevent other threads to execute printf_core()
    8686         */
    87         fibril_mutex_lock(&printf_mutex);
     87        futex_down(&printf_futex);
     88       
     89        /*
     90         * Prevent other fibrils of the same thread
     91         * to execute printf_core()
     92         */
     93        async_serialize_start();
    8894       
    8995        int ret = printf_core(fmt, &ps, ap);
    9096       
    91         fibril_mutex_unlock(&printf_mutex);
     97        async_serialize_end();
     98        futex_up(&printf_futex);
    9299       
    93100        return ret;
Note: See TracChangeset for help on using the changeset viewer.