[Xenomai-git] Alexis Berlemont : analogy: implement the configuration of a wake-up threshold
Module: xenomai-head Branch: master Commit: 8bf74e38c75947251ca95c6f53958c8e4a9b49af URL: http://git.xenomai.org/?p=xenomai-head.git;a=commit;h=8bf74e38c75947251ca95c6f53958c8e4a9b49af Author: Alexis Berlemont Date: Tue May 10 23:54:25 2011 +0200 analogy: implement the configuration of a wake-up threshold Two functions are now available to define a wake-up threshold. a4l_set/get_wakesize() allows the developer to define the minimal data amount needed to wake-up a sleeping process (waiting for an event during an asynchronous acquisition). --- include/analogy/analogy.h | 80 -- include/analogy/buffer.h | 23 + include/analogy/ioctl.h |7 ++- ksrc/drivers/analogy/buffer.c | 86 +--- ksrc/drivers/analogy/rtdm_interface.c |8 ++- src/drvlib/analogy/async.c| 31 6 files changed, 185 insertions(+), 50 deletions(-) diff --git a/include/analogy/analogy.h b/include/analogy/analogy.h index 15736a8..6a81674 100644 --- a/include/analogy/analogy.h +++ b/include/analogy/analogy.h @@ -43,22 +43,22 @@ int a4l_sys_read(int fd, void *buf, size_t nbyte); int a4l_sys_write(int fd, void *buf, size_t nbyte); -int a4l_sys_attach(int fd, a4l_lnkdesc_t * arg); +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_desc(int fd, a4l_desc_t *dsc, int pass); -int a4l_sys_devinfo(int fd, a4l_dvinfo_t * info); +int a4l_sys_devinfo(int fd, a4l_dvinfo_t *info); -int a4l_sys_subdinfo(int fd, a4l_sbinfo_t * info); +int a4l_sys_subdinfo(int fd, a4l_sbinfo_t *info); int a4l_sys_nbchaninfo(int fd, unsigned int idx_subd, unsigned int *nb); -int a4l_sys_chaninfo(int fd, -unsigned int idx_subd, a4l_chinfo_t * info); +int a4l_sys_chaninfo(int fd, +unsigned int idx_subd, a4l_chinfo_t *info); int a4l_sys_nbrnginfo(int fd, unsigned int idx_subd, @@ -66,7 +66,7 @@ int a4l_sys_nbrnginfo(int fd, int a4l_sys_rnginfo(int fd, unsigned int idx_subd, - unsigned int idx_chan, a4l_rnginfo_t * info); + unsigned int idx_chan, a4l_rnginfo_t *info); /* --- Level 1 API (supposed to be used) --- */ @@ -92,83 +92,87 @@ int a4l_get_chinfo(a4l_desc_t *dsc, int a4l_get_rnginfo(a4l_desc_t *dsc, unsigned int subd, unsigned int chan, - unsigned int rng, a4l_rnginfo_t ** info); + unsigned int rng, a4l_rnginfo_t **info); #define a4l_is_rng_global(x) ((x)->flags & A4L_RNG_GLOBAL) -int a4l_snd_command(a4l_desc_t * dsc, a4l_cmd_t *cmd); +int a4l_snd_command(a4l_desc_t *dsc, a4l_cmd_t *cmd); + +int a4l_snd_cancel(a4l_desc_t *dsc, unsigned int idx_subd); -int a4l_snd_cancel(a4l_desc_t * dsc, unsigned int idx_subd); - -int a4l_set_bufsize(a4l_desc_t * dsc, +int a4l_set_bufsize(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long size); -int a4l_get_bufsize(a4l_desc_t * dsc, +int a4l_get_bufsize(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long *size); -int a4l_mark_bufrw(a4l_desc_t * dsc, +int a4l_set_wakesize(a4l_desc_t *dsc, unsigned long size); + +int a4l_get_wakesize(a4l_desc_t *dsc, unsigned long *size); + +int a4l_mark_bufrw(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long cur, unsigned long *newp); -int a4l_poll(a4l_desc_t * dsc, +int a4l_poll(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long ms_timeout); - -int a4l_mmap(a4l_desc_t * dsc, + +int a4l_mmap(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long size, void **ptr); -int a4l_async_read(a4l_desc_t * dsc, +int a4l_async_read(a4l_desc_t *dsc, void *buf, size_t nbyte, unsigned long ms_timeout); -int a4l_async_write(a4l_desc_t * dsc, +int a4l_async_write(a4l_desc_t *dsc, void *buf, size_t nbyte, unsigned long ms_timeout); -int a4l_snd_insnlist(a4l_desc_t * dsc, a4l_insnlst_t * arg); +int a4l_snd_insnlist(a4l_desc_t *dsc, a4l_insnlst_t *arg); -int a4l_snd_insn(a4l_desc_t * dsc, a4l_insn_t *arg); +int a4l_snd_insn(a4l_desc_t *dsc, a4l_insn_t *arg); /* --- Level 2 API (supposed to be used) --- */ -int a4l_sync_write(a4l_desc_t * dsc, +int a4l_sync_write(a4l_desc_t *dsc, unsigned int idx_subd, unsigned int chan_desc, unsigned int delay, void *buf, size_t nbyte); - -int a4l_sync_read(a4l_desc_t * dsc, + +int a4l_sync_read(a4l_desc_t *dsc, unsigned int idx_subd, unsigned int chan_desc, unsigned int delay, void *buf, size_t nbyte); -int a4l_config_subd(a4l_desc_t * dsc, +int a
[Xenomai-git] Alexis Berlemont : analogy: implement the configuration of a wake-up threshold
Module: xenomai-abe Branch: analogy Commit: 8bf74e38c75947251ca95c6f53958c8e4a9b49af URL: http://git.xenomai.org/?p=xenomai-abe.git;a=commit;h=8bf74e38c75947251ca95c6f53958c8e4a9b49af Author: Alexis Berlemont Date: Tue May 10 23:54:25 2011 +0200 analogy: implement the configuration of a wake-up threshold Two functions are now available to define a wake-up threshold. a4l_set/get_wakesize() allows the developer to define the minimal data amount needed to wake-up a sleeping process (waiting for an event during an asynchronous acquisition). --- include/analogy/analogy.h | 80 -- include/analogy/buffer.h | 23 + include/analogy/ioctl.h |7 ++- ksrc/drivers/analogy/buffer.c | 86 +--- ksrc/drivers/analogy/rtdm_interface.c |8 ++- src/drvlib/analogy/async.c| 31 6 files changed, 185 insertions(+), 50 deletions(-) diff --git a/include/analogy/analogy.h b/include/analogy/analogy.h index 15736a8..6a81674 100644 --- a/include/analogy/analogy.h +++ b/include/analogy/analogy.h @@ -43,22 +43,22 @@ int a4l_sys_read(int fd, void *buf, size_t nbyte); int a4l_sys_write(int fd, void *buf, size_t nbyte); -int a4l_sys_attach(int fd, a4l_lnkdesc_t * arg); +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_desc(int fd, a4l_desc_t *dsc, int pass); -int a4l_sys_devinfo(int fd, a4l_dvinfo_t * info); +int a4l_sys_devinfo(int fd, a4l_dvinfo_t *info); -int a4l_sys_subdinfo(int fd, a4l_sbinfo_t * info); +int a4l_sys_subdinfo(int fd, a4l_sbinfo_t *info); int a4l_sys_nbchaninfo(int fd, unsigned int idx_subd, unsigned int *nb); -int a4l_sys_chaninfo(int fd, -unsigned int idx_subd, a4l_chinfo_t * info); +int a4l_sys_chaninfo(int fd, +unsigned int idx_subd, a4l_chinfo_t *info); int a4l_sys_nbrnginfo(int fd, unsigned int idx_subd, @@ -66,7 +66,7 @@ int a4l_sys_nbrnginfo(int fd, int a4l_sys_rnginfo(int fd, unsigned int idx_subd, - unsigned int idx_chan, a4l_rnginfo_t * info); + unsigned int idx_chan, a4l_rnginfo_t *info); /* --- Level 1 API (supposed to be used) --- */ @@ -92,83 +92,87 @@ int a4l_get_chinfo(a4l_desc_t *dsc, int a4l_get_rnginfo(a4l_desc_t *dsc, unsigned int subd, unsigned int chan, - unsigned int rng, a4l_rnginfo_t ** info); + unsigned int rng, a4l_rnginfo_t **info); #define a4l_is_rng_global(x) ((x)->flags & A4L_RNG_GLOBAL) -int a4l_snd_command(a4l_desc_t * dsc, a4l_cmd_t *cmd); +int a4l_snd_command(a4l_desc_t *dsc, a4l_cmd_t *cmd); + +int a4l_snd_cancel(a4l_desc_t *dsc, unsigned int idx_subd); -int a4l_snd_cancel(a4l_desc_t * dsc, unsigned int idx_subd); - -int a4l_set_bufsize(a4l_desc_t * dsc, +int a4l_set_bufsize(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long size); -int a4l_get_bufsize(a4l_desc_t * dsc, +int a4l_get_bufsize(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long *size); -int a4l_mark_bufrw(a4l_desc_t * dsc, +int a4l_set_wakesize(a4l_desc_t *dsc, unsigned long size); + +int a4l_get_wakesize(a4l_desc_t *dsc, unsigned long *size); + +int a4l_mark_bufrw(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long cur, unsigned long *newp); -int a4l_poll(a4l_desc_t * dsc, +int a4l_poll(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long ms_timeout); - -int a4l_mmap(a4l_desc_t * dsc, + +int a4l_mmap(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long size, void **ptr); -int a4l_async_read(a4l_desc_t * dsc, +int a4l_async_read(a4l_desc_t *dsc, void *buf, size_t nbyte, unsigned long ms_timeout); -int a4l_async_write(a4l_desc_t * dsc, +int a4l_async_write(a4l_desc_t *dsc, void *buf, size_t nbyte, unsigned long ms_timeout); -int a4l_snd_insnlist(a4l_desc_t * dsc, a4l_insnlst_t * arg); +int a4l_snd_insnlist(a4l_desc_t *dsc, a4l_insnlst_t *arg); -int a4l_snd_insn(a4l_desc_t * dsc, a4l_insn_t *arg); +int a4l_snd_insn(a4l_desc_t *dsc, a4l_insn_t *arg); /* --- Level 2 API (supposed to be used) --- */ -int a4l_sync_write(a4l_desc_t * dsc, +int a4l_sync_write(a4l_desc_t *dsc, unsigned int idx_subd, unsigned int chan_desc, unsigned int delay, void *buf, size_t nbyte); - -int a4l_sync_read(a4l_desc_t * dsc, + +int a4l_sync_read(a4l_desc_t *dsc, unsigned int idx_subd, unsigned int chan_desc, unsigned int delay, void *buf, size_t nbyte); -int a4l_config_subd(a4l_desc_t * dsc, +int a4
[Xenomai-git] Alexis Berlemont : analogy: implement the configuration of a wake-up threshold
Module: xenomai-abe Branch: analogy Commit: 34a9ce36efe182e7fb0fc5ef2febcd166f7109c9 URL: http://git.xenomai.org/?p=xenomai-abe.git;a=commit;h=34a9ce36efe182e7fb0fc5ef2febcd166f7109c9 Author: Alexis Berlemont Date: Tue May 10 23:54:25 2011 +0200 analogy: implement the configuration of a wake-up threshold Two functions are now available to define a wake-up threshold. a4l_set/get_wakesize() allows the developer to define the minimal data amount needed to wake-up a sleeping process (waiting for an event during an asynchronous acquisition). --- include/analogy/analogy.h | 80 -- include/analogy/buffer.h | 23 + include/analogy/ioctl.h |7 ++- ksrc/drivers/analogy/buffer.c | 86 +--- ksrc/drivers/analogy/rtdm_interface.c |8 ++- src/drvlib/analogy/async.c| 31 6 files changed, 185 insertions(+), 50 deletions(-) diff --git a/include/analogy/analogy.h b/include/analogy/analogy.h index 15736a8..6a81674 100644 --- a/include/analogy/analogy.h +++ b/include/analogy/analogy.h @@ -43,22 +43,22 @@ int a4l_sys_read(int fd, void *buf, size_t nbyte); int a4l_sys_write(int fd, void *buf, size_t nbyte); -int a4l_sys_attach(int fd, a4l_lnkdesc_t * arg); +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_desc(int fd, a4l_desc_t *dsc, int pass); -int a4l_sys_devinfo(int fd, a4l_dvinfo_t * info); +int a4l_sys_devinfo(int fd, a4l_dvinfo_t *info); -int a4l_sys_subdinfo(int fd, a4l_sbinfo_t * info); +int a4l_sys_subdinfo(int fd, a4l_sbinfo_t *info); int a4l_sys_nbchaninfo(int fd, unsigned int idx_subd, unsigned int *nb); -int a4l_sys_chaninfo(int fd, -unsigned int idx_subd, a4l_chinfo_t * info); +int a4l_sys_chaninfo(int fd, +unsigned int idx_subd, a4l_chinfo_t *info); int a4l_sys_nbrnginfo(int fd, unsigned int idx_subd, @@ -66,7 +66,7 @@ int a4l_sys_nbrnginfo(int fd, int a4l_sys_rnginfo(int fd, unsigned int idx_subd, - unsigned int idx_chan, a4l_rnginfo_t * info); + unsigned int idx_chan, a4l_rnginfo_t *info); /* --- Level 1 API (supposed to be used) --- */ @@ -92,83 +92,87 @@ int a4l_get_chinfo(a4l_desc_t *dsc, int a4l_get_rnginfo(a4l_desc_t *dsc, unsigned int subd, unsigned int chan, - unsigned int rng, a4l_rnginfo_t ** info); + unsigned int rng, a4l_rnginfo_t **info); #define a4l_is_rng_global(x) ((x)->flags & A4L_RNG_GLOBAL) -int a4l_snd_command(a4l_desc_t * dsc, a4l_cmd_t *cmd); +int a4l_snd_command(a4l_desc_t *dsc, a4l_cmd_t *cmd); + +int a4l_snd_cancel(a4l_desc_t *dsc, unsigned int idx_subd); -int a4l_snd_cancel(a4l_desc_t * dsc, unsigned int idx_subd); - -int a4l_set_bufsize(a4l_desc_t * dsc, +int a4l_set_bufsize(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long size); -int a4l_get_bufsize(a4l_desc_t * dsc, +int a4l_get_bufsize(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long *size); -int a4l_mark_bufrw(a4l_desc_t * dsc, +int a4l_set_wakesize(a4l_desc_t *dsc, unsigned long size); + +int a4l_get_wakesize(a4l_desc_t *dsc, unsigned long *size); + +int a4l_mark_bufrw(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long cur, unsigned long *newp); -int a4l_poll(a4l_desc_t * dsc, +int a4l_poll(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long ms_timeout); - -int a4l_mmap(a4l_desc_t * dsc, + +int a4l_mmap(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long size, void **ptr); -int a4l_async_read(a4l_desc_t * dsc, +int a4l_async_read(a4l_desc_t *dsc, void *buf, size_t nbyte, unsigned long ms_timeout); -int a4l_async_write(a4l_desc_t * dsc, +int a4l_async_write(a4l_desc_t *dsc, void *buf, size_t nbyte, unsigned long ms_timeout); -int a4l_snd_insnlist(a4l_desc_t * dsc, a4l_insnlst_t * arg); +int a4l_snd_insnlist(a4l_desc_t *dsc, a4l_insnlst_t *arg); -int a4l_snd_insn(a4l_desc_t * dsc, a4l_insn_t *arg); +int a4l_snd_insn(a4l_desc_t *dsc, a4l_insn_t *arg); /* --- Level 2 API (supposed to be used) --- */ -int a4l_sync_write(a4l_desc_t * dsc, +int a4l_sync_write(a4l_desc_t *dsc, unsigned int idx_subd, unsigned int chan_desc, unsigned int delay, void *buf, size_t nbyte); - -int a4l_sync_read(a4l_desc_t * dsc, + +int a4l_sync_read(a4l_desc_t *dsc, unsigned int idx_subd, unsigned int chan_desc, unsigned int delay, void *buf, size_t nbyte); -int a4l_config_subd(a4l_desc_t * dsc, +int a4
[Xenomai-git] Alexis Berlemont : analogy: implement the configuration of a wake-up threshold
Module: xenomai-abe Branch: experimental Commit: daa207e2f10651ce6ddc4884d9a474715a02d4f9 URL: http://git.xenomai.org/?p=xenomai-abe.git;a=commit;h=daa207e2f10651ce6ddc4884d9a474715a02d4f9 Author: Alexis Berlemont Date: Tue May 10 23:54:25 2011 +0200 analogy: implement the configuration of a wake-up threshold Two functions are now available to define a wake-up threshold. a4l_set/get_wakesize() allows the developer to define the minimal data amount needed to wake-up a sleeping process (waiting for an event during an asynchronous acquisition). --- include/analogy/analogy.h | 80 -- include/analogy/buffer.h | 23 + include/analogy/ioctl.h |7 ++- ksrc/drivers/analogy/buffer.c | 86 +--- ksrc/drivers/analogy/rtdm_interface.c |8 ++- src/drvlib/analogy/async.c| 31 6 files changed, 185 insertions(+), 50 deletions(-) diff --git a/include/analogy/analogy.h b/include/analogy/analogy.h index 15736a8..6a81674 100644 --- a/include/analogy/analogy.h +++ b/include/analogy/analogy.h @@ -43,22 +43,22 @@ int a4l_sys_read(int fd, void *buf, size_t nbyte); int a4l_sys_write(int fd, void *buf, size_t nbyte); -int a4l_sys_attach(int fd, a4l_lnkdesc_t * arg); +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_desc(int fd, a4l_desc_t *dsc, int pass); -int a4l_sys_devinfo(int fd, a4l_dvinfo_t * info); +int a4l_sys_devinfo(int fd, a4l_dvinfo_t *info); -int a4l_sys_subdinfo(int fd, a4l_sbinfo_t * info); +int a4l_sys_subdinfo(int fd, a4l_sbinfo_t *info); int a4l_sys_nbchaninfo(int fd, unsigned int idx_subd, unsigned int *nb); -int a4l_sys_chaninfo(int fd, -unsigned int idx_subd, a4l_chinfo_t * info); +int a4l_sys_chaninfo(int fd, +unsigned int idx_subd, a4l_chinfo_t *info); int a4l_sys_nbrnginfo(int fd, unsigned int idx_subd, @@ -66,7 +66,7 @@ int a4l_sys_nbrnginfo(int fd, int a4l_sys_rnginfo(int fd, unsigned int idx_subd, - unsigned int idx_chan, a4l_rnginfo_t * info); + unsigned int idx_chan, a4l_rnginfo_t *info); /* --- Level 1 API (supposed to be used) --- */ @@ -92,83 +92,87 @@ int a4l_get_chinfo(a4l_desc_t *dsc, int a4l_get_rnginfo(a4l_desc_t *dsc, unsigned int subd, unsigned int chan, - unsigned int rng, a4l_rnginfo_t ** info); + unsigned int rng, a4l_rnginfo_t **info); #define a4l_is_rng_global(x) ((x)->flags & A4L_RNG_GLOBAL) -int a4l_snd_command(a4l_desc_t * dsc, a4l_cmd_t *cmd); +int a4l_snd_command(a4l_desc_t *dsc, a4l_cmd_t *cmd); + +int a4l_snd_cancel(a4l_desc_t *dsc, unsigned int idx_subd); -int a4l_snd_cancel(a4l_desc_t * dsc, unsigned int idx_subd); - -int a4l_set_bufsize(a4l_desc_t * dsc, +int a4l_set_bufsize(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long size); -int a4l_get_bufsize(a4l_desc_t * dsc, +int a4l_get_bufsize(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long *size); -int a4l_mark_bufrw(a4l_desc_t * dsc, +int a4l_set_wakesize(a4l_desc_t *dsc, unsigned long size); + +int a4l_get_wakesize(a4l_desc_t *dsc, unsigned long *size); + +int a4l_mark_bufrw(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long cur, unsigned long *newp); -int a4l_poll(a4l_desc_t * dsc, +int a4l_poll(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long ms_timeout); - -int a4l_mmap(a4l_desc_t * dsc, + +int a4l_mmap(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long size, void **ptr); -int a4l_async_read(a4l_desc_t * dsc, +int a4l_async_read(a4l_desc_t *dsc, void *buf, size_t nbyte, unsigned long ms_timeout); -int a4l_async_write(a4l_desc_t * dsc, +int a4l_async_write(a4l_desc_t *dsc, void *buf, size_t nbyte, unsigned long ms_timeout); -int a4l_snd_insnlist(a4l_desc_t * dsc, a4l_insnlst_t * arg); +int a4l_snd_insnlist(a4l_desc_t *dsc, a4l_insnlst_t *arg); -int a4l_snd_insn(a4l_desc_t * dsc, a4l_insn_t *arg); +int a4l_snd_insn(a4l_desc_t *dsc, a4l_insn_t *arg); /* --- Level 2 API (supposed to be used) --- */ -int a4l_sync_write(a4l_desc_t * dsc, +int a4l_sync_write(a4l_desc_t *dsc, unsigned int idx_subd, unsigned int chan_desc, unsigned int delay, void *buf, size_t nbyte); - -int a4l_sync_read(a4l_desc_t * dsc, + +int a4l_sync_read(a4l_desc_t *dsc, unsigned int idx_subd, unsigned int chan_desc, unsigned int delay, void *buf, size_t nbyte); -int a4l_config_subd(a4l_desc_t * dsc, +i
[Xenomai-git] Alexis Berlemont : analogy: implement the configuration of a wake-up threshold
Module: xenomai-abe Branch: experimental Commit: deac8867bedda1ff284498f3b46435683ffe3bee URL: http://git.xenomai.org/?p=xenomai-abe.git;a=commit;h=deac8867bedda1ff284498f3b46435683ffe3bee Author: Alexis Berlemont Date: Tue May 10 23:54:25 2011 +0200 analogy: implement the configuration of a wake-up threshold Two functions are now available to define a wake-up threshold. a4l_set/get_wakesize() allows the developer to define the minimal data amount needed to wake-up a sleeping process (waiting for an event during an asynchronous acquisition). --- include/analogy/analogy.h | 80 -- include/analogy/buffer.h | 23 + include/analogy/ioctl.h |7 ++- ksrc/drivers/analogy/buffer.c | 86 +--- ksrc/drivers/analogy/rtdm_interface.c |8 ++- src/drvlib/analogy/async.c| 31 6 files changed, 185 insertions(+), 50 deletions(-) diff --git a/include/analogy/analogy.h b/include/analogy/analogy.h index 15736a8..6a81674 100644 --- a/include/analogy/analogy.h +++ b/include/analogy/analogy.h @@ -43,22 +43,22 @@ int a4l_sys_read(int fd, void *buf, size_t nbyte); int a4l_sys_write(int fd, void *buf, size_t nbyte); -int a4l_sys_attach(int fd, a4l_lnkdesc_t * arg); +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_desc(int fd, a4l_desc_t *dsc, int pass); -int a4l_sys_devinfo(int fd, a4l_dvinfo_t * info); +int a4l_sys_devinfo(int fd, a4l_dvinfo_t *info); -int a4l_sys_subdinfo(int fd, a4l_sbinfo_t * info); +int a4l_sys_subdinfo(int fd, a4l_sbinfo_t *info); int a4l_sys_nbchaninfo(int fd, unsigned int idx_subd, unsigned int *nb); -int a4l_sys_chaninfo(int fd, -unsigned int idx_subd, a4l_chinfo_t * info); +int a4l_sys_chaninfo(int fd, +unsigned int idx_subd, a4l_chinfo_t *info); int a4l_sys_nbrnginfo(int fd, unsigned int idx_subd, @@ -66,7 +66,7 @@ int a4l_sys_nbrnginfo(int fd, int a4l_sys_rnginfo(int fd, unsigned int idx_subd, - unsigned int idx_chan, a4l_rnginfo_t * info); + unsigned int idx_chan, a4l_rnginfo_t *info); /* --- Level 1 API (supposed to be used) --- */ @@ -92,83 +92,87 @@ int a4l_get_chinfo(a4l_desc_t *dsc, int a4l_get_rnginfo(a4l_desc_t *dsc, unsigned int subd, unsigned int chan, - unsigned int rng, a4l_rnginfo_t ** info); + unsigned int rng, a4l_rnginfo_t **info); #define a4l_is_rng_global(x) ((x)->flags & A4L_RNG_GLOBAL) -int a4l_snd_command(a4l_desc_t * dsc, a4l_cmd_t *cmd); +int a4l_snd_command(a4l_desc_t *dsc, a4l_cmd_t *cmd); + +int a4l_snd_cancel(a4l_desc_t *dsc, unsigned int idx_subd); -int a4l_snd_cancel(a4l_desc_t * dsc, unsigned int idx_subd); - -int a4l_set_bufsize(a4l_desc_t * dsc, +int a4l_set_bufsize(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long size); -int a4l_get_bufsize(a4l_desc_t * dsc, +int a4l_get_bufsize(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long *size); -int a4l_mark_bufrw(a4l_desc_t * dsc, +int a4l_set_wakesize(a4l_desc_t *dsc, unsigned long size); + +int a4l_get_wakesize(a4l_desc_t *dsc, unsigned long *size); + +int a4l_mark_bufrw(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long cur, unsigned long *newp); -int a4l_poll(a4l_desc_t * dsc, +int a4l_poll(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long ms_timeout); - -int a4l_mmap(a4l_desc_t * dsc, + +int a4l_mmap(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long size, void **ptr); -int a4l_async_read(a4l_desc_t * dsc, +int a4l_async_read(a4l_desc_t *dsc, void *buf, size_t nbyte, unsigned long ms_timeout); -int a4l_async_write(a4l_desc_t * dsc, +int a4l_async_write(a4l_desc_t *dsc, void *buf, size_t nbyte, unsigned long ms_timeout); -int a4l_snd_insnlist(a4l_desc_t * dsc, a4l_insnlst_t * arg); +int a4l_snd_insnlist(a4l_desc_t *dsc, a4l_insnlst_t *arg); -int a4l_snd_insn(a4l_desc_t * dsc, a4l_insn_t *arg); +int a4l_snd_insn(a4l_desc_t *dsc, a4l_insn_t *arg); /* --- Level 2 API (supposed to be used) --- */ -int a4l_sync_write(a4l_desc_t * dsc, +int a4l_sync_write(a4l_desc_t *dsc, unsigned int idx_subd, unsigned int chan_desc, unsigned int delay, void *buf, size_t nbyte); - -int a4l_sync_read(a4l_desc_t * dsc, + +int a4l_sync_read(a4l_desc_t *dsc, unsigned int idx_subd, unsigned int chan_desc, unsigned int delay, void *buf, size_t nbyte); -int a4l_config_subd(a4l_desc_t * dsc, +i
[Xenomai-git] Alexis Berlemont : analogy: implement the configuration of a wake-up threshold
Module: xenomai-abe Branch: experimental Commit: e2fd130f84ab05a933fa9778b91eed74bde6723b URL: http://git.xenomai.org/?p=xenomai-abe.git;a=commit;h=e2fd130f84ab05a933fa9778b91eed74bde6723b Author: Alexis Berlemont Date: Tue May 10 23:54:25 2011 +0200 analogy: implement the configuration of a wake-up threshold Two functions are now available to define a wake-up threshold. a4l_set/get_wakesize() allows the developer to define the minimal data amount needed to wake-up a sleeping process (waiting for an event during an asynchronous acquisition). --- include/analogy/analogy.h | 72 ++- include/analogy/buffer.h | 23 + include/analogy/ioctl.h |7 ++- ksrc/drivers/analogy/buffer.c | 86 +--- ksrc/drivers/analogy/rtdm_interface.c |4 +- src/drvlib/analogy/async.c| 31 6 files changed, 179 insertions(+), 44 deletions(-) diff --git a/include/analogy/analogy.h b/include/analogy/analogy.h index 88f7f1a..16282fc 100644 --- a/include/analogy/analogy.h +++ b/include/analogy/analogy.h @@ -43,22 +43,22 @@ int a4l_sys_read(int fd, void *buf, size_t nbyte); int a4l_sys_write(int fd, void *buf, size_t nbyte); -int a4l_sys_attach(int fd, a4l_lnkdesc_t * arg); +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_desc(int fd, a4l_desc_t *dsc, int pass); -int a4l_sys_devinfo(int fd, a4l_dvinfo_t * info); +int a4l_sys_devinfo(int fd, a4l_dvinfo_t *info); -int a4l_sys_subdinfo(int fd, a4l_sbinfo_t * info); +int a4l_sys_subdinfo(int fd, a4l_sbinfo_t *info); int a4l_sys_nbchaninfo(int fd, unsigned int idx_subd, unsigned int *nb); int a4l_sys_chaninfo(int fd, -unsigned int idx_subd, a4l_chinfo_t * info); +unsigned int idx_subd, a4l_chinfo_t *info); int a4l_sys_nbrnginfo(int fd, unsigned int idx_subd, @@ -66,7 +66,7 @@ int a4l_sys_nbrnginfo(int fd, int a4l_sys_rnginfo(int fd, unsigned int idx_subd, - unsigned int idx_chan, a4l_rnginfo_t * info); + unsigned int idx_chan, a4l_rnginfo_t *info); /* --- Level 1 API (supposed to be used) --- */ @@ -92,83 +92,87 @@ int a4l_get_chinfo(a4l_desc_t *dsc, int a4l_get_rnginfo(a4l_desc_t *dsc, unsigned int subd, unsigned int chan, - unsigned int rng, a4l_rnginfo_t ** info); + unsigned int rng, a4l_rnginfo_t **info); #define a4l_is_rng_global(x) ((x)->flags & A4L_RNG_GLOBAL) -int a4l_snd_command(a4l_desc_t * dsc, a4l_cmd_t *cmd); +int a4l_snd_command(a4l_desc_t *dsc, a4l_cmd_t *cmd); -int a4l_snd_cancel(a4l_desc_t * dsc, unsigned int idx_subd); +int a4l_snd_cancel(a4l_desc_t *dsc, unsigned int idx_subd); -int a4l_set_bufsize(a4l_desc_t * dsc, +int a4l_set_bufsize(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long size); -int a4l_get_bufsize(a4l_desc_t * dsc, +int a4l_get_bufsize(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long *size); -int a4l_mark_bufrw(a4l_desc_t * dsc, +int a4l_set_wakesize(a4l_desc_t *dsc, unsigned long size); + +int a4l_get_wakesize(a4l_desc_t *dsc, unsigned long *size); + +int a4l_mark_bufrw(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long cur, unsigned long *newp); -int a4l_poll(a4l_desc_t * dsc, +int a4l_poll(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long ms_timeout); -int a4l_mmap(a4l_desc_t * dsc, +int a4l_mmap(a4l_desc_t *dsc, unsigned int idx_subd, unsigned long size, void **ptr); -int a4l_async_read(a4l_desc_t * dsc, +int a4l_async_read(a4l_desc_t *dsc, void *buf, size_t nbyte, unsigned long ms_timeout); -int a4l_async_write(a4l_desc_t * dsc, +int a4l_async_write(a4l_desc_t *dsc, void *buf, size_t nbyte, unsigned long ms_timeout); -int a4l_snd_insnlist(a4l_desc_t * dsc, a4l_insnlst_t * arg); +int a4l_snd_insnlist(a4l_desc_t *dsc, a4l_insnlst_t *arg); -int a4l_snd_insn(a4l_desc_t * dsc, a4l_insn_t *arg); +int a4l_snd_insn(a4l_desc_t *dsc, a4l_insn_t *arg); /* --- Level 2 API (supposed to be used) --- */ -int a4l_sync_write(a4l_desc_t * dsc, +int a4l_sync_write(a4l_desc_t *dsc, unsigned int idx_subd, unsigned int chan_desc, unsigned int delay, void *buf, size_t nbyte); -int a4l_sync_read(a4l_desc_t * dsc, +int a4l_sync_read(a4l_desc_t *dsc, unsigned int idx_subd, unsigned int chan_desc, unsigned int delay, void *buf, size_t nbyte); -int a4l_config_subd(a4l_desc_t * dsc, +int a4l_config_subd(a4l_desc_t