Changeset 7c5320c in mainline


Ignore:
Timestamp:
2023-02-07T16:03:05Z (22 months ago)
Author:
Jiří Zárevúcky <zarevucky.jiri@…>
Branches:
master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
1eaead4
Parents:
5110d0a
git-author:
Jiří Zárevúcky <zarevucky.jiri@…> (2023-02-07 15:59:26)
git-committer:
Jiří Zárevúcky <zarevucky.jiri@…> (2023-02-07 16:03:05)
Message:

Use the semaphore interface instead of waitq in some places

Since we already have an underused semaphore API in the kernel,
it would be worthwhile to use it in places where the baseline
semaphore semantics are needed. It makes the function of the
calls obvious even to people unfamiliar with the details of
waitq API.

Location:
kernel
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ia32/src/smp/smp.c

    r5110d0a r7c5320c  
    178178                         * supposed to wake us up.
    179179                         */
    180                         if (waitq_sleep_timeout(&ap_completion_wq, 1000000,
    181                             SYNCH_FLAGS_NONE, NULL) == ETIMEOUT) {
     180                        if (semaphore_down_timeout(&ap_completion_semaphore, 1000000) != EOK) {
    182181                                log(LF_ARCH, LVL_NOTE, "%s: waiting for cpu%u "
    183182                                    "(APIC ID = %d) timed out", __FUNCTION__,
  • kernel/arch/sparc64/src/smp/sun4u/smp.c

    r5110d0a r7c5320c  
    106106        waking_up_mid = mid;
    107107
    108         if (waitq_sleep_timeout(&ap_completion_wq, 1000000,
    109             SYNCH_FLAGS_NONE, NULL) == ETIMEOUT)
     108        if (semaphore_down_timeout(&ap_completion_semaphore, 1000000) != EOK)
    110109                log(LF_ARCH, LVL_NOTE, "%s: waiting for processor (mid = %" PRIu32
    111110                    ") timed out", __func__, mid);
  • kernel/arch/sparc64/src/smp/sun4v/smp.c

    r5110d0a r7c5320c  
    373373#endif
    374374
    375         if (waitq_sleep_timeout(&ap_completion_wq, 10000000,
    376             SYNCH_FLAGS_NONE, NULL) == ETIMEOUT)
     375        if (semaphore_down_timeout(&ap_completion_semaphore, 10000000) != EOK)
    377376                printf("%s: waiting for processor (cpuid = %" PRIu64 ") timed out\n",
    378377                    __func__, cpuid);
  • kernel/generic/include/console/chardev.h

    r5110d0a r7c5320c  
    3939#include <stdbool.h>
    4040#include <stddef.h>
    41 #include <synch/waitq.h>
     41#include <synch/semaphore.h>
    4242#include <synch/spinlock.h>
    4343
     
    6464typedef struct indev {
    6565        const char *name;
    66         waitq_t wq;
     66        semaphore_t wq;
    6767
    6868        /** Protects everything below. */
  • kernel/generic/include/smp/smp.h

    r5110d0a r7c5320c  
    3636#define KERN_SMP_H_
    3737
    38 #include <synch/waitq.h>
     38#include <synch/semaphore.h>
    3939
    40 extern waitq_t ap_completion_wq;
     40extern semaphore_t ap_completion_semaphore;
    4141
    4242#ifdef CONFIG_SMP
  • kernel/generic/src/console/chardev.c

    r5110d0a r7c5320c  
    5252{
    5353        indev->name = name;
    54         waitq_initialize(&indev->wq);
     54        semaphore_initialize(&indev->wq, 0);
    5555        irq_spinlock_initialize(&indev->lock, "chardev.indev.lock");
    5656        indev->counter = 0;
     
    8181        /* Index modulo size of buffer */
    8282        indev->index = indev->index % INDEV_BUFLEN;
    83         waitq_wakeup(&indev->wq, WAKEUP_FIRST);
     83        semaphore_up(&indev->wq);
    8484        irq_spinlock_unlock(&indev->lock, true);
    8585}
     
    115115        }
    116116
    117         waitq_sleep(&indev->wq);
     117        semaphore_down(&indev->wq);
    118118        irq_spinlock_lock(&indev->lock, true);
    119119        char32_t ch = indev->buffer[(indev->index - indev->counter) %
  • kernel/generic/src/main/kinit.c

    r5110d0a r7c5320c  
    111111#ifdef CONFIG_SMP
    112112        if (config.cpu_count > 1) {
    113                 waitq_initialize(&ap_completion_wq);
     113                semaphore_initialize(&ap_completion_semaphore, 0);
    114114
    115115                /*
  • kernel/generic/src/main/main.c

    r5110d0a r7c5320c  
    383383        timeout_init();
    384384
    385         waitq_wakeup(&ap_completion_wq, WAKEUP_FIRST);
     385        semaphore_up(&ap_completion_semaphore);
    386386        scheduler();
    387387        /* not reached */
  • kernel/generic/src/smp/smp.c

    r5110d0a r7c5320c  
    3939#ifdef CONFIG_SMP
    4040
    41 waitq_t ap_completion_wq;
     41semaphore_t ap_completion_semaphore;
    4242
    4343#endif /* CONFIG_SMP */
Note: See TracChangeset for help on using the changeset viewer.