util: add helper APIs for dealing with inotify in portable manner

The inotify userspace API for reading events is quite horrible, so it is
useful to wrap it in a more friendly API to avoid duplicating code
across many users in QEMU. Wrapping it also allows introduction of a
platform portability layer, so that we can add impls for non-Linux based
equivalents in future.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
Daniel P. Berrangé 2018-06-08 17:24:57 +01:00
parent d88d85f1f0
commit 90e33dfec6
9 changed files with 1234 additions and 1 deletions

59
util/filemonitor-stub.c Normal file
View file

@ -0,0 +1,59 @@
/*
* QEMU file monitor stub impl
*
* Copyright (c) 2018 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, see <http://www.gnu.org/licenses/>.
*
*/
#include "qemu/osdep.h"
#include "qemu/filemonitor.h"
#include "qemu/error-report.h"
#include "qapi/error.h"
QFileMonitor *
qemu_file_monitor_new(Error **errp)
{
error_setg(errp, "File monitoring not available on this platform");
return NULL;
}
void
qemu_file_monitor_free(QFileMonitor *mon G_GNUC_UNUSED)
{
}
int
qemu_file_monitor_add_watch(QFileMonitor *mon G_GNUC_UNUSED,
const char *dirpath G_GNUC_UNUSED,
const char *filename G_GNUC_UNUSED,
QFileMonitorHandler cb G_GNUC_UNUSED,
void *opaque G_GNUC_UNUSED,
Error **errp)
{
error_setg(errp, "File monitoring not available on this platform");
return -1;
}
void
qemu_file_monitor_remove_watch(QFileMonitor *mon G_GNUC_UNUSED,
const char *dirpath G_GNUC_UNUSED,
int id G_GNUC_UNUSED)
{
}