aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>2022-05-25 16:29:36 +0900
committerTakashi Sakamoto <o-takashi@sakamocchi.jp>2022-05-25 16:29:36 +0900
commitbc39183432b529f98616e2f6490dcc8d67e6bc2a (patch)
treeb3e214d272548f8d30d2eb54c3c5eabdcd456e71
parent286bc02d622658f98251f16f64f4910ed8b77826 (diff)
downloadlibhinoko-bc39183432b529f98616e2f6490dcc8d67e6bc2a.tar.gz
fw_iso_ctx_private: code refactoring for ioctl error generator
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
-rw-r--r--src/fw_iso_ctx_private.c12
-rw-r--r--src/fw_iso_ctx_private.h5
-rw-r--r--src/fw_iso_rx_multiple.c2
3 files changed, 10 insertions, 9 deletions
diff --git a/src/fw_iso_ctx_private.c b/src/fw_iso_ctx_private.c
index ddbe0d0..ce51f6d 100644
--- a/src/fw_iso_ctx_private.c
+++ b/src/fw_iso_ctx_private.c
@@ -126,7 +126,7 @@ gboolean fw_iso_ctx_state_allocate(struct fw_iso_ctx_state *state, const char *p
// Support FW_CDEV_VERSION_AUTO_FLUSH_ISO_OVERFLOW.
info.version = 5;
if (ioctl(state->fd, FW_CDEV_IOC_GET_INFO, &info) < 0) {
- generate_ioctl_error(error, errno, FW_CDEV_IOC_GET_INFO);
+ generate_fw_iso_ctx_error_ioctl(error, errno, FW_CDEV_IOC_GET_INFO);
fw_iso_ctx_state_release(state);
return FALSE;
}
@@ -137,7 +137,7 @@ gboolean fw_iso_ctx_state_allocate(struct fw_iso_ctx_state *state, const char *p
create.header_size = header_size;
if (ioctl(state->fd, FW_CDEV_IOC_CREATE_ISO_CONTEXT, &create) < 0) {
- generate_ioctl_error(error, errno, FW_CDEV_IOC_CREATE_ISO_CONTEXT);
+ generate_fw_iso_ctx_error_ioctl(error, errno, FW_CDEV_IOC_CREATE_ISO_CONTEXT);
fw_iso_ctx_state_release(state);
return FALSE;
}
@@ -412,7 +412,7 @@ gboolean fw_iso_ctx_state_queue_chunks(struct fw_iso_ctx_state *state, GError **
arg.data = (__u64)(state->addr + buf_offset);
arg.handle = state->handle;
if (ioctl(state->fd, FW_CDEV_IOC_QUEUE_ISO, &arg) < 0) {
- generate_ioctl_error(error, errno, FW_CDEV_IOC_QUEUE_ISO);
+ generate_fw_iso_ctx_error_ioctl(error, errno, FW_CDEV_IOC_QUEUE_ISO);
return FALSE;
}
@@ -518,7 +518,7 @@ gboolean fw_iso_ctx_state_start(struct fw_iso_ctx_state *state, const guint16 *c
arg.tags = tags;
arg.handle = state->handle;
if (ioctl(state->fd, FW_CDEV_IOC_START_ISO, &arg) < 0) {
- generate_ioctl_error(error, errno, FW_CDEV_IOC_START_ISO);
+ generate_fw_iso_ctx_error_ioctl(error, errno, FW_CDEV_IOC_START_ISO);
return FALSE;
}
@@ -594,7 +594,7 @@ void fw_iso_ctx_state_read_frame(struct fw_iso_ctx_state *state, guint offset, g
gboolean fw_iso_ctx_state_flush_completions(struct fw_iso_ctx_state *state, GError **error)
{
if (ioctl(state->fd, FW_CDEV_IOC_FLUSH_ISO) < 0) {
- generate_ioctl_error(error, errno, FW_CDEV_IOC_FLUSH_ISO);
+ generate_fw_iso_ctx_error_ioctl(error, errno, FW_CDEV_IOC_FLUSH_ISO);
return FALSE;
}
@@ -627,7 +627,7 @@ gboolean fw_iso_ctx_state_get_cycle_timer(struct fw_iso_ctx_state *state, gint c
(*cycle_timer)->clk_id = clock_id;
if (ioctl(state->fd, FW_CDEV_IOC_GET_CYCLE_TIMER2, *cycle_timer) < 0) {
- generate_ioctl_error(error, errno, FW_CDEV_IOC_GET_CYCLE_TIMER2);
+ generate_fw_iso_ctx_error_ioctl(error, errno, FW_CDEV_IOC_GET_CYCLE_TIMER2);
return FALSE;
}
diff --git a/src/fw_iso_ctx_private.h b/src/fw_iso_ctx_private.h
index 09a3f40..f9d7bdc 100644
--- a/src/fw_iso_ctx_private.h
+++ b/src/fw_iso_ctx_private.h
@@ -24,8 +24,9 @@ static inline void generate_fw_iso_ctx_error_coded(GError **error, HinokoFwIsoCt
HINOKO_FW_ISO_CTX_ERROR_FAILED, \
format " %d(%s)", arg, errno, strerror(errno))
-#define generate_ioctl_error(error, errno, request) \
- generate_syscall_error(error, errno, "ioctl(%s)", #request)
+#define generate_fw_iso_ctx_error_ioctl(error, errno, request) \
+ g_set_error(error, HINOKO_FW_ISO_CTX_ERROR, HINOKO_FW_ISO_CTX_ERROR_FAILED, \
+ "ioctl(" #request ") %d (%s)", errno, strerror(errno))
#define IEEE1394_MAX_CHANNEL 63
#define IEEE1394_MAX_SYNC_CODE 15
diff --git a/src/fw_iso_rx_multiple.c b/src/fw_iso_rx_multiple.c
index b023adb..ad36136 100644
--- a/src/fw_iso_rx_multiple.c
+++ b/src/fw_iso_rx_multiple.c
@@ -381,7 +381,7 @@ gboolean hinoko_fw_iso_rx_multiple_allocate(HinokoFwIsoRxMultiple *self, const c
set.handle = priv->state.handle;
if (ioctl(priv->state.fd, FW_CDEV_IOC_SET_ISO_CHANNELS, &set) < 0) {
- generate_ioctl_error(error, errno, FW_CDEV_IOC_SET_ISO_CHANNELS);
+ generate_fw_iso_ctx_error_ioctl(error, errno, FW_CDEV_IOC_SET_ISO_CHANNELS);
hinoko_fw_iso_ctx_release(HINOKO_FW_ISO_CTX(self));
return FALSE;
} else if (set.channels == 0) {