Changeset 74b92e6 in mainline


Ignore:
Timestamp:
2025-04-12T15:55:08Z (2 days ago)
Author:
Jiří Zárevúcky <zarevucky.jiri@…>
Branches:
master
Children:
1cea9c0, 2ef2a0d
Parents:
8165a7a
Message:

Fix sysinfo locking

Turns out sysinfo doesn't like spinlock

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/sysinfo/sysinfo.c

    r8165a7a r74b92e6  
    3434 */
    3535
     36#include <arch/asm.h>
    3637#include <assert.h>
    37 #include <sysinfo/sysinfo.h>
     38#include <errno.h>
     39#include <macros.h>
    3840#include <mm/slab.h>
    3941#include <stdio.h>
     42#include <stdlib.h>
     43#include <synch/mutex.h>
    4044#include <syscall/copy.h>
    41 #include <synch/mutex.h>
    42 #include <arch/asm.h>
    43 #include <errno.h>
    44 #include <macros.h>
    45 #include <stdlib.h>
     45#include <sysinfo/sysinfo.h>
    4646
    4747/** Maximal sysinfo path length */
     
    5757
    5858/** Sysinfo lock */
    59 static IRQ_SPINLOCK_INITIALIZE(sysinfo_lock);
     59static MUTEX_INITIALIZE(sysinfo_lock, MUTEX_PASSIVE);
    6060
    6161/** Sysinfo item constructor
     
    327327{
    328328        /* Protect sysinfo tree consistency */
    329         irq_spinlock_lock(&sysinfo_lock, true);
     329        mutex_lock(&sysinfo_lock);
    330330
    331331        if (root == NULL)
     
    340340        }
    341341
    342         irq_spinlock_unlock(&sysinfo_lock, true);
     342        mutex_unlock(&sysinfo_lock);
    343343}
    344344
     
    360360{
    361361        /* Protect sysinfo tree consistency */
    362         irq_spinlock_lock(&sysinfo_lock, true);
     362        mutex_lock(&sysinfo_lock);
    363363
    364364        if (root == NULL)
     
    374374        }
    375375
    376         irq_spinlock_unlock(&sysinfo_lock, true);
     376        mutex_unlock(&sysinfo_lock);
    377377}
    378378
     
    390390{
    391391        /* Protect sysinfo tree consistency */
    392         irq_spinlock_lock(&sysinfo_lock, true);
     392        mutex_lock(&sysinfo_lock);
    393393
    394394        if (root == NULL)
     
    404404        }
    405405
    406         irq_spinlock_unlock(&sysinfo_lock, true);
     406        mutex_unlock(&sysinfo_lock);
    407407}
    408408
     
    425425{
    426426        /* Protect sysinfo tree consistency */
    427         irq_spinlock_lock(&sysinfo_lock, true);
     427        mutex_lock(&sysinfo_lock);
    428428
    429429        if (root == NULL)
     
    439439        }
    440440
    441         irq_spinlock_unlock(&sysinfo_lock, true);
     441        mutex_unlock(&sysinfo_lock);
    442442}
    443443
     
    452452{
    453453        /* Protect sysinfo tree consistency */
    454         irq_spinlock_lock(&sysinfo_lock, true);
     454        mutex_lock(&sysinfo_lock);
    455455
    456456        if (root == NULL)
     
    463463                printf("Could not set sysinfo item %s.\n", name);
    464464
    465         irq_spinlock_unlock(&sysinfo_lock, true);
     465        mutex_unlock(&sysinfo_lock);
    466466}
    467467
     
    479479{
    480480        /* Protect sysinfo tree consistency */
    481         irq_spinlock_lock(&sysinfo_lock, true);
     481        mutex_lock(&sysinfo_lock);
    482482
    483483        if (root == NULL)
     
    498498        }
    499499
    500         irq_spinlock_unlock(&sysinfo_lock, true);
     500        mutex_unlock(&sysinfo_lock);
    501501}
    502502
     
    596596         * while we are dumping it
    597597         */
    598         irq_spinlock_lock(&sysinfo_lock, true);
     598        mutex_lock(&sysinfo_lock);
    599599
    600600        if (root == NULL)
     
    603603                sysinfo_dump_internal(root, 0);
    604604
    605         irq_spinlock_unlock(&sysinfo_lock, true);
     605        mutex_unlock(&sysinfo_lock);
    606606}
    607607
     
    695695                 * are reading it.
    696696                 */
    697                 irq_spinlock_lock(&sysinfo_lock, true);
     697                mutex_lock(&sysinfo_lock);
    698698                ret = sysinfo_get_item(path, NULL, dry_run);
    699                 irq_spinlock_unlock(&sysinfo_lock, true);
     699                mutex_unlock(&sysinfo_lock);
    700700        }
    701701
     
    806806                 * are reading it.
    807807                 */
    808                 irq_spinlock_lock(&sysinfo_lock, true);
     808                mutex_lock(&sysinfo_lock);
    809809                ret = sysinfo_get_keys(path, NULL, dry_run);
    810                 irq_spinlock_unlock(&sysinfo_lock, true);
     810                mutex_unlock(&sysinfo_lock);
    811811        }
    812812
Note: See TracChangeset for help on using the changeset viewer.