Compare commits

...

4 commits

Author SHA1 Message Date
hujun5
85eb63dd4e
Merge 58e38a91c3 into 39780fdae1 2025-01-12 00:18:19 +08:00
rongyichang
39780fdae1 drivers/vhost-rng: fix compile error in vhost-rng.
vhost/vhost-rng.c:154:9: error: too few arguments to function 'virtio_create_virtqueues'
  154 |   ret = vhost_create_virtqueues(hdev, 0, 1, vqnames, callback);

Signed-off-by: rongyichang <rongyichang@xiaomi.com>
2025-01-12 00:06:12 +08:00
rongyichang
ee2f3df2ff drivers/vhost: fix compile error while get vhost status.
vhost/vhost.c: In function 'vhost_status_driver_ok':
vhost/vhost.c:86:20: error: too few arguments to function 'virtio_get_status'
   86 |   uint8_t status = vhost_get_status(hdev);

Signed-off-by: rongyichang <rongyichang@xiaomi.com>
2025-01-12 00:06:12 +08:00
hujun5
58e38a91c3 clock_adjtime: use small lock to protect g_adjtime_ppb g_adjtime_wdog
reason:
We would like to replace the critical section with a small lock.

Signed-off-by: hujun5 <hujun5@xiaomi.com>
2024-12-11 18:43:34 +08:00
3 changed files with 18 additions and 4 deletions

View file

@ -30,6 +30,7 @@
#include <stdlib.h>
#include <nuttx/kmalloc.h>
#include <nuttx/spinlock.h>
#include <nuttx/vhost/vhost.h>
#include <nuttx/wqueue.h>
@ -151,7 +152,7 @@ static int vhost_rng_probe(FAR struct vhost_device *hdev)
vqnames[0] = "virtio_rng";
callback[0] = vhost_rng_handler;
ret = vhost_create_virtqueues(hdev, 0, 1, vqnames, callback);
ret = vhost_create_virtqueues(hdev, 0, 1, vqnames, callback, NULL);
if (ret < 0)
{
vhosterr("virtio_device_create_virtqueue failed, ret=%d\n", ret);

View file

@ -83,8 +83,15 @@ static struct vhost_bus_s g_vhost_bus =
static bool vhost_status_driver_ok(FAR struct vhost_device *hdev)
{
uint8_t status = vhost_get_status(hdev);
bool driver_ok = false;
uint8_t status;
int ret;
ret = vhost_get_status(hdev, &status);
if (ret)
{
return driver_ok;
}
/* Busy wait until the remote is ready */

View file

@ -49,6 +49,7 @@
static struct wdog_s g_adjtime_wdog;
static long g_adjtime_ppb;
static spinlock_t g_adjtime_lock = SP_UNLOCKED;
/****************************************************************************
* Private Functions
@ -58,8 +59,12 @@ static long g_adjtime_ppb;
static void adjtime_wdog_callback(wdparm_t arg)
{
irqstate_t flags;
UNUSED(arg);
flags = spin_lock_irqsave(&g_adjtime_lock);
#ifdef CONFIG_ARCH_HAVE_ADJTIME
up_adjtime(0);
#endif
@ -69,6 +74,7 @@ static void adjtime_wdog_callback(wdparm_t arg)
#endif
g_adjtime_ppb = 0;
spin_unlock_irqrestore(&g_adjtime_lock, flags);
}
/* Query remaining adjustment in microseconds */
@ -108,7 +114,7 @@ static int adjtime_start(long long adjust_usec)
ppb = -ppb_limit;
}
flags = enter_critical_section();
flags = spin_lock_irqsave(&g_adjtime_lock);
/* Set new adjustment */
@ -134,7 +140,7 @@ static int adjtime_start(long long adjust_usec)
wd_cancel(&g_adjtime_wdog);
}
leave_critical_section(flags);
spin_unlock_irqrestore(&g_adjtime_lock, flags);
return ret;
}