Files
RedBear-OS/local/recipes/libs/glib/source/gio/tests/volumemonitor.c
T
vasilito cee25393d8 fix: boot process improvements — dependency cycle, INIT_NOTIFY, probing loop, and log spam fixes
- Fix P15-8-init-cycle-detection.patch: replace visiting+error with seen+silent-skip
  to eliminate 11 false-positive 'dependency cycle detected' errors on shared deps
- Fix P0-daemon-fix-init-notify-unwrap.patch: remove eprintln! for missing
  INIT_NOTIFY (expected for oneshot_async services, ~7 daemons affected)
- Fix driver-manager hotplug loop: add PERMANENTLY_SKIPPED static set shared
  between hotplug handler and DriverConfig::probe() to stop infinite re-probing
  of Fatal/NotSupported/deferred-exhausted device+driver pairs (e.g. ided)
- Fix driver-manager log_timeline: suppress repeated EPIPE/ENOENT errors with
  AtomicI32 dedup and AtomicBool one-shot guards for boot timeline JSON
- Add driver-manager SIGTERM handler, ACPI bus registration, --status mode,
  driver reap loop, graceful shutdown, and reduced deferred retries (30→3)
2026-05-17 12:34:02 +03:00

181 lines
3.5 KiB
C

#include <gio/gio.h>
static GVolumeMonitor *monitor;
static void
do_mount_tests (GDrive *drive, GVolume *volume, GMount *mount)
{
GDrive *d;
GVolume *v;
gchar *name;
gchar *uuid;
name = g_mount_get_name (mount);
g_assert (name != NULL);
g_free (name);
v = g_mount_get_volume (mount);
g_assert (v == volume);
if (v != NULL)
g_object_unref (v);
d = g_mount_get_drive (mount);
g_assert (d == drive);
if (d != NULL)
g_object_unref (d);
uuid = g_mount_get_uuid (mount);
if (uuid)
{
GMount *m;
m = g_volume_monitor_get_mount_for_uuid (monitor, uuid);
g_assert (m == mount);
g_object_unref (m);
g_free (uuid);
}
}
static void
do_volume_tests (GDrive *drive, GVolume *volume)
{
GDrive *d;
gchar *name;
GMount *mount;
gchar *uuid;
name = g_volume_get_name (volume);
g_assert (name != NULL);
g_free (name);
d = g_volume_get_drive (volume);
g_assert (d == drive);
if (d != NULL)
g_object_unref (d);
mount = g_volume_get_mount (volume);
if (mount != NULL)
{
do_mount_tests (drive, volume, mount);
g_object_unref (mount);
}
uuid = g_volume_get_uuid (volume);
if (uuid)
{
GVolume *v;
v = g_volume_monitor_get_volume_for_uuid (monitor, uuid);
g_assert (v == volume);
g_object_unref (v);
g_free (uuid);
}
}
static void
do_drive_tests (GDrive *drive)
{
GList *volumes, *l;
gchar *name;
gboolean has_volumes;
g_assert (G_IS_DRIVE (drive));
name = g_drive_get_name (drive);
g_assert (name != NULL);
g_free (name);
has_volumes = g_drive_has_volumes (drive);
volumes = g_drive_get_volumes (drive);
g_assert (has_volumes == (volumes != NULL));
for (l = volumes; l; l = l->next)
{
GVolume *volume = l->data;
do_volume_tests (drive, volume);
}
g_list_free_full (volumes, g_object_unref);
}
static void
test_connected_drives (void)
{
GList *drives;
GList *l;
drives = g_volume_monitor_get_connected_drives (monitor);
for (l = drives; l; l = l->next)
{
GDrive *drive = l->data;
do_drive_tests (drive);
}
g_list_free_full (drives, g_object_unref);
}
static void
test_volumes (void)
{
GList *volumes, *l;
volumes = g_volume_monitor_get_volumes (monitor);
for (l = volumes; l; l = l->next)
{
GVolume *volume = l->data;
GDrive *drive;
drive = g_volume_get_drive (volume);
do_volume_tests (drive, volume);
if (drive != NULL)
g_object_unref (drive);
}
g_list_free_full (volumes, g_object_unref);
}
static void
test_mounts (void)
{
GList *mounts, *l;
mounts = g_volume_monitor_get_mounts (monitor);
for (l = mounts; l; l = l->next)
{
GMount *mount = l->data;
GVolume *volume;
GDrive *drive;
drive = g_mount_get_drive (mount);
volume = g_mount_get_volume (mount);
do_mount_tests (drive, volume, mount);
if (drive != NULL)
g_object_unref (drive);
if (volume != NULL)
g_object_unref (volume);
}
g_list_free_full (mounts, g_object_unref);
}
int
main (int argc, char *argv[])
{
gboolean ret;
g_setenv ("GIO_USE_VFS", "local", FALSE);
g_test_init (&argc, &argv, NULL);
monitor = g_volume_monitor_get ();
g_test_add_func ("/volumemonitor/connected_drives", test_connected_drives);
g_test_add_func ("/volumemonitor/volumes", test_volumes);
g_test_add_func ("/volumemonitor/mounts", test_mounts);
ret = g_test_run ();
g_object_unref (monitor);
return ret;
}