Module: xenomai-2.5
Branch: master
Commit: 126dbeaac5f17b7a006bd98783aea9bf1d8958f9
URL:    
http://git.xenomai.org/?p=xenomai-2.5.git;a=commit;h=126dbeaac5f17b7a006bd98783aea9bf1d8958f9

Author: Alexis Berlemont <alexis.berlem...@gmail.com>
Date:   Fri Oct 22 22:20:21 2010 +0200

analogy: add a "sys" function for the ioctl BUFCONFIG

The tool analogy_config uses the level 0 of the library API. At this
level, a function was missing to configure the default buffer size.

---

 include/analogy/analogy.h  |    2 ++
 src/drvlib/analogy/async.c |    9 ++++-----
 src/drvlib/analogy/sys.c   |   33 +++++++++++++++++++++++++++++++++
 3 files changed, 39 insertions(+), 5 deletions(-)

diff --git a/include/analogy/analogy.h b/include/analogy/analogy.h
index c40f2e7..88f7f1a 100644
--- a/include/analogy/analogy.h
+++ b/include/analogy/analogy.h
@@ -47,6 +47,8 @@ int a4l_sys_attach(int fd, a4l_lnkdesc_t * arg);
 
 int a4l_sys_detach(int fd);
 
+int a4l_sys_bufcfg(int fd, unsigned int idx_subd, unsigned long size);
+
 int a4l_sys_desc(int fd, a4l_desc_t * dsc, int pass);
 
 int a4l_sys_devinfo(int fd, a4l_dvinfo_t * info);
diff --git a/src/drvlib/analogy/async.c b/src/drvlib/analogy/async.c
index f342af3..176a289 100644
--- a/src/drvlib/analogy/async.c
+++ b/src/drvlib/analogy/async.c
@@ -109,8 +109,9 @@ int a4l_snd_cancel(a4l_desc_t * dsc, unsigned int idx_subd)
  *
  * @return 0 on success. Otherwise:
  *
- * - -EINVAL is returned if some argument is missing or wrong (Please,
- *    type "dmesg" for more info)
+ * - -EINVAL is returned if the analogy descriptor is not correct or
+      if some argument is missing or wrong (Please, type "dmesg" for
+      more info)
  * - -EPERM is returned if the function is called in an RT context or
  *    if the buffer to resize is mapped in user-space (Please, type
  *    "dmesg" for more info)
@@ -123,13 +124,11 @@ int a4l_snd_cancel(a4l_desc_t * dsc, unsigned int 
idx_subd)
 int a4l_set_bufsize(a4l_desc_t * dsc,
                    unsigned int idx_subd, unsigned long size)
 {
-       a4l_bufcfg_t cfg = { idx_subd, size };
-
        /* Basic checking */
        if (dsc == NULL || dsc->fd < 0)
                return -EINVAL;
 
-       return __sys_ioctl(dsc->fd, A4L_BUFCFG, &cfg);
+       return a4l_sys_bufcfg(dsc->fd, idx_subd, size);
 }
 
 /**
diff --git a/src/drvlib/analogy/sys.c b/src/drvlib/analogy/sys.c
index 51edcfe..4f22b45 100644
--- a/src/drvlib/analogy/sys.c
+++ b/src/drvlib/analogy/sys.c
@@ -179,4 +179,37 @@ int a4l_sys_detach(int fd)
        return __sys_ioctl(fd, A4L_DEVCFG, NULL);
 }
 
+/**
+ * @brief Configure the buffer size
+ *
+ *
+ * This function can configure the buffer size of the file descriptor
+ * currently in use. If the subdevice index is set to
+ * A4L_BUF_DEFMAGIC, it can also define the default buffser size at
+ * open time.
+ *
+ * @param[in] fd File descriptor as returned by a4l_sys_open()
+ * @param[in] idx_subd Index of the concerned subdevice
+ * @param[int] size Buffer size to be set
+ *
+ * @return 0 on success. Otherwise:
+ *
+ * - -EINVAL is returned if some argument is missing or wrong (Please,
+ *    type "dmesg" for more info)
+ * - -EPERM is returned if the function is called in an RT context or
+ *    if the buffer to resize is mapped in user-space (Please, type
+ *    "dmesg" for more info)
+ * - -EFAULT is returned if a user <-> kernel transfer went wrong
+ * - -EBUSY is returned if the selected subdevice is already
+ *    processing an asynchronous operation
+ * - -ENOMEM is returned if the system is out of memory
+ *
+ */
+int a4l_sys_bufcfg(int fd, unsigned int idx_subd, unsigned long size)
+{
+       a4l_bufcfg_t cfg = { idx_subd, size };
+
+       return __sys_ioctl(fd, A4L_BUFCFG, &cfg);
+}
+
 /** @} */


_______________________________________________
Xenomai-git mailing list
Xenomai-git@gna.org
https://mail.gna.org/listinfo/xenomai-git

Reply via email to