[Xenomai-git] Philippe Gerum : smokey/sched-tp: force affinity on the test CPU

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: b32d11169db844a7770a599b73d66145af069e2f
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=b32d11169db844a7770a599b73d66145af069e2f

Author: Philippe Gerum r...@xenomai.org
Date:   Mon Oct 27 08:57:27 2014 +0100

smokey/sched-tp: force affinity on the test CPU

---

 testsuite/smokey/sched-tp/sched-tp.c |7 +++
 1 file changed, 7 insertions(+)

diff --git a/testsuite/smokey/sched-tp/sched-tp.c 
b/testsuite/smokey/sched-tp/sched-tp.c
index ee6a07f..b946c85 100644
--- a/testsuite/smokey/sched-tp/sched-tp.c
+++ b/testsuite/smokey/sched-tp/sched-tp.c
@@ -37,8 +37,15 @@ static void *thread_body(void *arg)
pthread_t me = pthread_self();
struct sched_param_ex param;
struct timespec ts;
+   cpu_set_t affinity;
int ret, part;
 
+   CPU_ZERO(affinity);
+   CPU_SET(0, affinity);
+   ret = sched_setaffinity(0, sizeof(affinity), affinity);
+   if (ret)
+   error(1, errno, sched_setaffinity);
+
part = (int)(long)arg;
param.sched_priority = 50 - part;
param.sched_tp_partition = part;


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Philippe Gerum : cobalt/autotune: fixup for 32bit emulation

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 7ae93fc219c2a68317b5e21f7323820ddb20fa34
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=7ae93fc219c2a68317b5e21f7323820ddb20fa34

Author: Philippe Gerum r...@xenomai.org
Date:   Wed Oct 22 10:10:04 2014 +0200

cobalt/autotune: fixup for 32bit emulation

---

 include/rtdm/uapi/autotune.h   |8 
 kernel/drivers/autotune/autotune.c |4 ++--
 utils/autotune/autotune.c  |8 
 3 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/include/rtdm/uapi/autotune.h b/include/rtdm/uapi/autotune.h
index 4a75d72..225f2f8 100644
--- a/include/rtdm/uapi/autotune.h
+++ b/include/rtdm/uapi/autotune.h
@@ -24,15 +24,15 @@
 #define RTDM_SUBCLASS_AUTOTUNE 0
 
 struct autotune_setup {
-   int period;
-   int quiet;
+   __u32 period;
+   __u32 quiet;
 };
 
 #define AUTOTUNE_RTIOC_IRQ _IOW(RTDM_CLASS_AUTOTUNE, 0, struct 
autotune_setup)
 #define AUTOTUNE_RTIOC_KERN_IOW(RTDM_CLASS_AUTOTUNE, 1, struct 
autotune_setup)
 #define AUTOTUNE_RTIOC_USER_IOW(RTDM_CLASS_AUTOTUNE, 2, struct 
autotune_setup)
-#define AUTOTUNE_RTIOC_PULSE   _IOW(RTDM_CLASS_AUTOTUNE, 3, 
nanosecs_abs_t)
-#define AUTOTUNE_RTIOC_RUN _IOR(RTDM_CLASS_AUTOTUNE, 4, unsigned 
long)
+#define AUTOTUNE_RTIOC_PULSE   _IOW(RTDM_CLASS_AUTOTUNE, 3, __u64)
+#define AUTOTUNE_RTIOC_RUN _IOR(RTDM_CLASS_AUTOTUNE, 4, __u32)
 #define AUTOTUNE_RTIOC_RESET   _IO(RTDM_CLASS_AUTOTUNE, 5)
 
 #endif /* !_RTDM_UAPI_AUTOTUNE_H */
diff --git a/kernel/drivers/autotune/autotune.c 
b/kernel/drivers/autotune/autotune.c
index 34ba9d5..79608b3 100644
--- a/kernel/drivers/autotune/autotune.c
+++ b/kernel/drivers/autotune/autotune.c
@@ -675,8 +675,8 @@ static int autotune_ioctl_rt(struct rtdm_fd *fd, unsigned 
int request, void *arg
 {
struct autotune_context *context;
struct gravity_tuner *tuner;
-   nanosecs_abs_t timestamp;
-   unsigned int gravity;
+   __u64 timestamp;
+   __u32 gravity;
int ret;
 
context = rtdm_fd_to_private(fd);
diff --git a/utils/autotune/autotune.c b/utils/autotune/autotune.c
index 5a18310..fe2f621 100644
--- a/utils/autotune/autotune.c
+++ b/utils/autotune/autotune.c
@@ -87,8 +87,8 @@ static const struct option base_options[] = {
 
 static void *sampler_thread(void *arg)
 {
-   nanosecs_abs_t timestamp = 0;
int fd = (long)arg, ret, n = 0;
+   __u64 timestamp = 0;
struct timespec now;
 
for (;;) {
@@ -101,7 +101,7 @@ static void *sampler_thread(void *arg)
} else {
n++;
clock_gettime(CLOCK_MONOTONIC, now);
-   timestamp = (nanosecs_abs_t)now.tv_sec * 10 + 
now.tv_nsec;
+   timestamp = (__u64)now.tv_sec * 10 + 
now.tv_nsec;
}
}
 
@@ -206,8 +206,8 @@ static void usage(void)
 static void run_tuner(int fd, int op, int period, const char *type)
 {
struct autotune_setup setup;
-   unsigned long gravity;
pthread_t sampler;
+   __u32 gravity;
int ret;
 
setup.period = period;
@@ -232,7 +232,7 @@ static void run_tuner(int fd, int op, int period, const 
char *type)
pthread_cancel(sampler);
 
if (!quiet)
-   printf(%lu ns\n, gravity);
+   printf(%u ns\n, gravity);
 }
 
 int main(int argc, char *const argv[])


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Philippe Gerum : cobalt/posix/nsem: allow path lengths up to PATH_MAX

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 68cdffd721f751f2cf08123791d75d27cd7bc880
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=68cdffd721f751f2cf08123791d75d27cd7bc880

Author: Philippe Gerum r...@xenomai.org
Date:   Mon Oct 27 10:09:35 2014 +0100

cobalt/posix/nsem: allow path lengths up to PATH_MAX

As a consequence of this change, open/close/unlink ops move to low
stage handling.

---

 kernel/cobalt/posix/nsem.c  |   40 ++-
 kernel/cobalt/posix/sem.c   |   14 ++
 kernel/cobalt/posix/sem.h   |1 -
 kernel/cobalt/posix/syscall.c   |6 +++---
 kernel/cobalt/posix/syscall32.c |2 +-
 5 files changed, 33 insertions(+), 30 deletions(-)

diff --git a/kernel/cobalt/posix/nsem.c b/kernel/cobalt/posix/nsem.c
index af0cd49..e0472f7 100644
--- a/kernel/cobalt/posix/nsem.c
+++ b/kernel/cobalt/posix/nsem.c
@@ -33,6 +33,7 @@ struct named_sem {
struct cobalt_sem_shadow __user *usem;
unsigned int refs;
struct xnid id;
+   struct filename *filename;
 };
 
 static struct named_sem *sem_search(struct cobalt_process *cc, xnhandle_t 
handle)
@@ -48,11 +49,12 @@ static struct named_sem *sem_search(struct cobalt_process 
*cc, xnhandle_t handle
 
 static struct cobalt_sem_shadow __user *
 sem_open(struct cobalt_process *cc, struct cobalt_sem_shadow __user *ushadow,
-const char *name, int oflags, mode_t mode, unsigned int value)
+struct filename *filename, int oflags, mode_t mode, unsigned int value)
 {
+   const char *name = filename-name;
struct cobalt_sem_shadow shadow;
-   struct cobalt_sem *sem;
struct named_sem *u, *v;
+   struct cobalt_sem *sem;
xnhandle_t handle;
spl_t s;
int rc;
@@ -126,6 +128,7 @@ sem_open(struct cobalt_process *cc, struct 
cobalt_sem_shadow __user *ushadow,
u-sem = sem;
u-usem = ushadow;
u-refs = 1;
+   u-filename = filename;
 
xnlock_get_irqsave(named_sem_lock, s);
v = sem_search(cc, handle);
@@ -136,6 +139,7 @@ sem_open(struct cobalt_process *cc, struct 
cobalt_sem_shadow __user *ushadow,
--sem-refs;
xnlock_put_irqrestore(nklock, s);
 
+   putname(filename);
xnfree(u);
u = v;
} else {
@@ -171,6 +175,7 @@ static int sem_close(struct cobalt_process *cc, xnhandle_t 
handle)
 
__cobalt_sem_destroy(handle);
 
+   putname(u-filename);
xnfree(u);
return 1;
 
@@ -201,16 +206,17 @@ __cobalt_sem_open(struct cobalt_sem_shadow __user *usm,
if (IS_ERR(filename))
return ERR_CAST(filename);
 
-   usm = sem_open(cc, usm, filename-name, oflags, mode, value);
-   if (IS_ERR(usm))
+   usm = sem_open(cc, usm, filename, oflags, mode, value);
+   if (IS_ERR(usm)) {
trace_cobalt_psem_open_failed(filename-name, oflags, mode,
  value, PTR_ERR(usm));
-   putname(filename);
+   putname(filename);
+   }
 
return usm;
 }
 
-COBALT_SYSCALL(sem_open, current,
+COBALT_SYSCALL(sem_open, lostage,
   int, (struct cobalt_sem_shadow __user *__user *u_addrp,
 const char __user *u_name,
 int oflags, mode_t mode, unsigned int value))
@@ -227,7 +233,7 @@ COBALT_SYSCALL(sem_open, current,
return __xn_put_user(usm, u_addrp) ? -EFAULT : 0;
 }
 
-COBALT_SYSCALL(sem_close, current,
+COBALT_SYSCALL(sem_close, lostage,
   int, (struct cobalt_sem_shadow __user *usm))
 {
struct cobalt_process *cc;
@@ -260,21 +266,21 @@ static inline int sem_unlink(const char *name)
return 0;
 }
 
-COBALT_SYSCALL(sem_unlink, current,
+COBALT_SYSCALL(sem_unlink, lostage,
   int, (const char __user *u_name))
 {
-   char name[COBALT_MAXNAME + 1];
-   long len;
+   struct filename *filename;
+   int ret;
 
-   len = __xn_safe_strncpy_from_user(name, u_name, sizeof(name));
-   if (len  0)
-   return len;
-   if (len = sizeof(name))
-   return -ENAMETOOLONG;
+   filename = getname(u_name);
+   if (IS_ERR(filename))
+   return PTR_ERR(filename);
 
-   trace_cobalt_psem_unlink(name);
+   trace_cobalt_psem_unlink(filename-name);
+   ret = sem_unlink(filename-name);
+   putname(filename);
 
-   return sem_unlink(name);
+   return ret;
 }
 
 static void cleanup_named_sems(void *cookie, struct xnid *i)
diff --git a/kernel/cobalt/posix/sem.c b/kernel/cobalt/posix/sem.c
index 3555ab8..fb9f391 100644
--- a/kernel/cobalt/posix/sem.c
+++ b/kernel/cobalt/posix/sem.c
@@ -89,8 +89,6 @@ __cobalt_sem_init(const char *name, struct cobalt_sem_shadow 
*sm,
goto out;
}
 
-   ksformat(sem-name, sizeof(sem-name), %s, name);
-
sys_ppd = cobalt_ppd_get(!!(flags  SEM_PSHARED));
state = 

[Xenomai-git] Philippe Gerum : cobalt/sched/tp: detect assignment to unconfigured CPU

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 5278d83ea3a108bbf3bc579e7b7f9e2048bf33f0
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=5278d83ea3a108bbf3bc579e7b7f9e2048bf33f0

Author: Philippe Gerum r...@xenomai.org
Date:   Sun Oct 26 17:58:43 2014 +0100

cobalt/sched/tp: detect assignment to unconfigured CPU

---

 kernel/cobalt/sched-tp.c |4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/kernel/cobalt/sched-tp.c b/kernel/cobalt/sched-tp.c
index d3e7f5f..7ce04c1 100644
--- a/kernel/cobalt/sched-tp.c
+++ b/kernel/cobalt/sched-tp.c
@@ -158,8 +158,10 @@ static int xnsched_tp_declare(struct xnthread *thread,
  const union xnsched_policy_param *p)
 {
struct xnsched *sched = thread-sched;
+   struct xnsched_tp *tp = sched-tp;
 
-   if (p-tp.prio  XNSCHED_TP_MIN_PRIO ||
+   if (tp-gps == NULL ||
+   p-tp.prio  XNSCHED_TP_MIN_PRIO ||
p-tp.prio  XNSCHED_TP_MAX_PRIO)
return -EINVAL;
 


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Philippe Gerum : cobalt/posix/thread: propagate error upon failed setschedparam

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: cdde256f6857d991e49b100e5fc8a9760eba9c84
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=cdde256f6857d991e49b100e5fc8a9760eba9c84

Author: Philippe Gerum r...@xenomai.org
Date:   Sun Oct 26 17:57:46 2014 +0100

cobalt/posix/thread: propagate error upon failed setschedparam

---

 kernel/cobalt/posix/thread.c |5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/kernel/cobalt/posix/thread.c b/kernel/cobalt/posix/thread.c
index defea50..27c824b 100644
--- a/kernel/cobalt/posix/thread.c
+++ b/kernel/cobalt/posix/thread.c
@@ -246,7 +246,7 @@ pthread_setschedparam_ex(struct cobalt_thread *thread,
struct xnsched_class *sched_class;
union xnsched_policy_param param;
xnticks_t tslice;
-   int ret = 0;
+   int ret;
spl_t s;
 
xnlock_get_irqsave(nklock, s);
@@ -269,7 +269,8 @@ pthread_setschedparam_ex(struct cobalt_thread *thread,
if (cobalt_call_extension(thread_setsched, thread-extref, ret,
  sched_class, param)  ret)
goto out;
-   xnthread_set_schedparam(thread-threadbase, sched_class, param);
+   ret = xnthread_set_schedparam(thread-threadbase,
+ sched_class, param);
xnsched_run();
 out:
xnlock_put_irqrestore(nklock, s);


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Philippe Gerum : drivers/rtipc: fixup for 32bit emulation

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 92b6dab81dcf6d5be10642010830c359410055a7
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=92b6dab81dcf6d5be10642010830c359410055a7

Author: Philippe Gerum r...@xenomai.org
Date:   Wed Oct 22 15:20:21 2014 +0200

drivers/rtipc: fixup for 32bit emulation

---

 kernel/drivers/ipc/bufp.c |  115 ++---
 kernel/drivers/ipc/iddp.c |  123 +++---
 kernel/drivers/ipc/internal.h |   41 -
 kernel/drivers/ipc/rtipc.c|  365 -
 kernel/drivers/ipc/xddp.c |  113 ++---
 5 files changed, 520 insertions(+), 237 deletions(-)

diff --git a/kernel/drivers/ipc/bufp.c b/kernel/drivers/ipc/bufp.c
index 1e5ecf3..5ae166a 100644
--- a/kernel/drivers/ipc/bufp.c
+++ b/kernel/drivers/ipc/bufp.c
@@ -375,17 +375,16 @@ static ssize_t bufp_recvmsg(struct rtdm_fd *fd,
return -EINVAL;
 
/* Copy I/O vector in */
-   if (rtipc_get_arg(fd, iov, msg-msg_iov,
- sizeof(iov[0]) * msg-msg_iovlen))
-   return -EFAULT;
+   ret = rtipc_get_iovec(fd, iov, msg);
+   if (ret)
+   return ret;
 
ret = __bufp_recvmsg(fd, iov, msg-msg_iovlen, flags, saddr);
if (ret = 0)
return ret;
 
/* Copy the updated I/O vector back */
-   if (rtipc_put_arg(fd, msg-msg_iov, iov,
- sizeof(iov[0]) * msg-msg_iovlen))
+   if (rtipc_put_iovec(fd, iov, msg))
return -EFAULT;
 
/* Copy the source address if required. */
@@ -620,8 +619,7 @@ static ssize_t bufp_sendmsg(struct rtdm_fd *fd,
return -EINVAL;
 
/* Fetch the destination address to send to. */
-   if (rtipc_get_arg(fd, daddr,
- msg-msg_name, sizeof(daddr)))
+   if (rtipc_get_arg(fd, daddr, msg-msg_name, sizeof(daddr)))
return -EFAULT;
 
if (daddr.sipc_port  0 ||
@@ -639,20 +637,16 @@ static ssize_t bufp_sendmsg(struct rtdm_fd *fd,
return -EINVAL;
 
/* Copy I/O vector in */
-   if (rtipc_get_arg(fd, iov, msg-msg_iov,
- sizeof(iov[0]) * msg-msg_iovlen))
-   return -EFAULT;
+   ret = rtipc_get_iovec(fd, iov, msg);
+   if (ret)
+   return ret;
 
ret = __bufp_sendmsg(fd, iov, msg-msg_iovlen, flags, daddr);
if (ret = 0)
return ret;
 
/* Copy updated I/O vector back */
-   if (rtipc_put_arg(fd, msg-msg_iov, iov,
- sizeof(iov[0]) * msg-msg_iovlen))
-   return -EFAULT;
-
-   return ret;
+   return rtipc_put_iovec(fd, iov, msg) ?: ret;
 }
 
 static ssize_t bufp_write(struct rtdm_fd *fd,
@@ -829,30 +823,27 @@ static int __bufp_setsockopt(struct bufp_socket *sk,
struct rtipc_port_label plabel;
struct timeval tv;
rtdm_lockctx_t s;
-   int ret = 0;
size_t len;
+   int ret;
 
-   if (rtipc_get_arg(fd, sopt, arg, sizeof(sopt)))
-   return -EFAULT;
+   ret = rtipc_get_sockoptin(fd, sopt, arg);
+   if (ret)
+   return ret;
 
if (sopt.level == SOL_SOCKET) {
switch (sopt.optname) {
 
case SO_RCVTIMEO:
-   if (sopt.optlen != sizeof(tv))
-   return -EINVAL;
-   if (rtipc_get_arg(fd, tv,
- sopt.optval, sizeof(tv)))
-   return -EFAULT;
+   ret = rtipc_get_timeval(fd, tv, sopt.optval, 
sopt.optlen);
+   if (ret)
+   return ret;
sk-rx_timeout = rtipc_timeval_to_ns(tv);
break;
 
case SO_SNDTIMEO:
-   if (sopt.optlen != sizeof(tv))
-   return -EINVAL;
-   if (rtipc_get_arg(fd, tv,
- sopt.optval, sizeof(tv)))
-   return -EFAULT;
+   ret = rtipc_get_timeval(fd, tv, sopt.optval, 
sopt.optlen);
+   if (ret)
+   return ret;
sk-tx_timeout = rtipc_timeval_to_ns(tv);
break;
 
@@ -869,11 +860,9 @@ static int __bufp_setsockopt(struct bufp_socket *sk,
switch (sopt.optname) {
 
case BUFP_BUFSZ:
-   if (sopt.optlen != sizeof(len))
-   return -EINVAL;
-   if (rtipc_get_arg(fd, len,
- sopt.optval, sizeof(len)))
-   return -EFAULT;
+   ret = rtipc_get_length(fd, len, sopt.optval, sopt.optlen);
+   if (ret)
+   return ret;
if (len == 0)

[Xenomai-git] Jorge Ramirez-Ortiz : utils/analogy: calibration - cleanup

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: a4ec3dfe961e91e26abf61b78036481eda213e60
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=a4ec3dfe961e91e26abf61b78036481eda213e60

Author: Jorge Ramirez-Ortiz j...@xenomai.org
Date:   Sat Oct 25 12:37:33 2014 -0400

utils/analogy: calibration - cleanup

---

 lib/analogy/calibration.c |   35 ---
 utils/analogy/Makefile.am |   12 +---
 utils/analogy/analogy_calibrate.c |3 ---
 utils/analogy/analogy_calibrate.h |3 ---
 utils/analogy/calibration_ni_m.c  |6 --
 5 files changed, 9 insertions(+), 50 deletions(-)

diff --git a/lib/analogy/calibration.c b/lib/analogy/calibration.c
index 9fd944c..331dcac 100644
--- a/lib/analogy/calibration.c
+++ b/lib/analogy/calibration.c
@@ -19,12 +19,13 @@
  * License along with this library; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
-
+#include sys/types.h
+#include sys/stat.h
+#include fcntl.h
 #include math.h
 #include rtdm/analogy.h
 #include stdio.h
 #include errno.h
-#include wordexp.h
 #include iniparser/iniparser.h
 #include boilerplate/list.h
 #include calibration.h
@@ -196,36 +197,16 @@ write_calibration_file(FILE *dst, struct list *l,
 int a4l_read_calibration_file(char *name, struct a4l_calibration_data *data)
 {
const char *subdevice[2] = { AI_SUBD_STR, AO_SUBD_STR };
-   struct a4l_calibration_subdev_data *p = NULL;
int i, j, k, index = -1, nb_elements = -1;
+   struct a4l_calibration_subdev_data *p = NULL;
struct _dictionary_ *d;
-   const char *filename;
-   wordexp_t exp;
-   int ret = 0;
-
-   ret = wordexp(name, exp, WRDE_NOCMD|WRDE_UNDEF);
-   if (ret) {
-   /* can't apply calibration */
-   ret = ret == WRDE_NOSPACE ? -ENOMEM : -EINVAL;
-   return ret;
-   }
 
-   if (exp.we_wordc != 1) {
-   /* weird expansion of %s as rc file \n, params.name */
+   if (access(name, R_OK))
return -1;
-   }
 
-   filename = exp.we_wordv[0];
-   if (access(filename, R_OK)) {
-   /* cant access %s for reading \n, params.name */
+   d = iniparser_load(name);
+   if (d == NULL)
return -1;
-   }
-
-   d = iniparser_load(filename);
-   if (d == NULL) {
-   /* loading error for %s (%d)\n, params.name, errno */
-   return -1;
-   }
 
read_str(data-driver_name, d, PLATFORM_STR, DRIVER_STR);
read_str(data-board_name, d, PLATFORM_STR, BOARD_STR);
@@ -271,7 +252,7 @@ int a4l_read_calibration_file(char *name, struct 
a4l_calibration_data *data)
p++;
}
}
-   wordfree(exp);
+
 
return 0;
 }
diff --git a/utils/analogy/Makefile.am b/utils/analogy/Makefile.am
index eed1265..57ff7a8 100644
--- a/utils/analogy/Makefile.am
+++ b/utils/analogy/Makefile.am
@@ -31,17 +31,7 @@ analogy_config_LDADD = \
-lrt -lpthread
 
 analogy_calibrate_SOURCES = analogy_calibrate.c calibration_ni_m.c
-analogy_calibrate.c: git-stamp.h calibration_ni_m.h
-git-stamp.h: git-stamp
-   @set -x; if test -r $(top_srcdir)/.git; then
\
- stamp=`git --git-dir=$(top_srcdir)/.git rev-list --abbrev-commit -1 
HEAD`;\
- if test \! -s $@ || grep -wvq $$stamp $@; then
\
-   date=`git --git-dir=$(top_srcdir)/.git log -1 $$stamp 
--pretty=format:%ci`; \
-   echo #define GIT_STAMP \#$$stamp ($$date)\  $@;
\
- fi;   
\
-   elif test \! -r $@ -o -s $@; then   
\
-   rm -f $@  touch $@;   
\
-   fi; true
+analogy_calibrate.c: calibration_ni_m.h
 analogy_calibrate_LDADD = \
../../lib/analogy/libanalogy.la \
../../lib/cobalt/libcobalt.la   \
diff --git a/utils/analogy/analogy_calibrate.c 
b/utils/analogy/analogy_calibrate.c
index 1b87e39..ca33ab7 100644
--- a/utils/analogy/analogy_calibrate.c
+++ b/utils/analogy/analogy_calibrate.c
@@ -32,7 +32,6 @@
 #include calibration_ni_m.h
 
 struct timespec calibration_start_time;
-static const char *revision = 1.0.0;
 a4l_desc_t descriptor;
 
 static const struct option options[] = {
@@ -86,8 +85,6 @@ int main(int argc, char *argv[])
int v, i, fd, err = 0;
FILE *p = NULL;
 
-   __debug(version: git commit %s, revision %s \n, GIT_STAMP, revision);
-
for (;;) {
i = -1;
v = getopt_long_only(argc, argv, , options, i);
diff --git a/utils/analogy/analogy_calibrate.h 
b/utils/analogy/analogy_calibrate.h
index 09812ae..b2a1c6e 100644
--- 

[Xenomai-git] Jorge Ramirez-Ortiz : utils/analogy: calibration - use the analogy' s math utils

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: a66aefdeb317df5772f84eeba1468343a9e450c1
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=a66aefdeb317df5772f84eeba1468343a9e450c1

Author: Jorge Ramirez-Ortiz j...@xenomai.org
Date:   Tue Oct 14 21:03:05 2014 -0400

utils/analogy: calibration - use the analogy's math utils

---

 include/rtdm/analogy.h|   12 ++
 include/rtdm/uapi/analogy.h   |2 +-
 lib/analogy/Makefile.am   |5 +-
 lib/analogy/calibration.c |   22 ++
 lib/analogy/calibration.h |   21 ++
 lib/analogy/math.c|  418 +
 utils/analogy/Makefile.am |2 +-
 utils/analogy/analogy_calibrate.c |6 +-
 utils/analogy/calibration_ni_m.c  |  106 +++---
 utils/analogy/calibration_ni_m.h  |6 +-
 10 files changed, 515 insertions(+), 85 deletions(-)

diff --git a/include/rtdm/analogy.h b/include/rtdm/analogy.h
index fd26f58..c03d2b1 100644
--- a/include/rtdm/analogy.h
+++ b/include/rtdm/analogy.h
@@ -236,6 +236,18 @@ void a4l_write_calibration_file(FILE *dst, struct list *l,
 
 int a4l_read_calibration_file(char *name, struct a4l_calibration_data *data);
 
+int a4l_math_polyfit(unsigned order, double *r,double orig,
+const unsigned dim, double *x, double *y);
+
+void a4l_math_mean(double *pmean, double *val, unsigned nr);
+
+void a4l_math_stddev(double *pstddev,
+double mean, double *val, unsigned nr);
+
+void a4l_math_stddev_of_mean(double *pstddevm,
+double mean, double *val, unsigned nr);
+
+
 
 
 #endif /* !DOXYGEN_CPP */
diff --git a/include/rtdm/uapi/analogy.h b/include/rtdm/uapi/analogy.h
index 669ded7..a0a1e59 100644
--- a/include/rtdm/uapi/analogy.h
+++ b/include/rtdm/uapi/analogy.h
@@ -708,9 +708,9 @@ typedef struct a4l_instruction_list a4l_insnlst_t;
 
 struct a4l_calibration_subdev {
a4l_sbinfo_t *info;
+   char *name;
int slen;
int idx;
-   char *name;
 };
 
 struct a4l_calibration_subdev_data {
diff --git a/lib/analogy/Makefile.am b/lib/analogy/Makefile.am
index 500453d..b79d4cb 100644
--- a/lib/analogy/Makefile.am
+++ b/lib/analogy/Makefile.am
@@ -7,6 +7,7 @@ libanalogy_la_SOURCES = \
descriptor.c\
info.c  \
internal.h  \
+   math.c  \
calibration.c   \
range.c \
root_leaf.h \
@@ -19,4 +20,6 @@ libanalogy_la_CPPFLAGS =  \
-I$(top_srcdir)/lib/boilerplate 
 
 libanalogy_la_LIBADD = \
-   ../boilerplate/libboilerplate.la
+   ../boilerplate/libboilerplate.la\
+   -lm
+
diff --git a/lib/analogy/calibration.c b/lib/analogy/calibration.c
index 74b2789..85860d1 100644
--- a/lib/analogy/calibration.c
+++ b/lib/analogy/calibration.c
@@ -1,3 +1,25 @@
+/**
+ * @file
+ * Analogy for Linux, device, subdevice, etc. related features
+ *
+ * @note Copyright (C) 1997-2000 David A. Schleef d...@schleef.org
+ * @note Copyright (C) 2014 Jorge A. Ramirez-Ortiz j...@xenomai.org
+ *
+ * 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+
 #include rtdm/analogy.h
 #include stdio.h
 #include errno.h
diff --git a/lib/analogy/calibration.h b/lib/analogy/calibration.h
index 04a7e72..4080c60 100644
--- a/lib/analogy/calibration.h
+++ b/lib/analogy/calibration.h
@@ -1,3 +1,24 @@
+/**
+ * @file
+ * Analogy for Linux, internal calibration declarations
+ *
+ * @note Copyright (C) 2014 Jorge A Ramirez-Ortiz j...@xenomai.org
+ *
+ * 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+ */
+
 #ifndef __ANALOGY_CALIBRATION_H__
 

[Xenomai-git] Philippe Gerum : cobalt/sched/tp: fix double unlink on thread fallback to FIFO

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 4cfacb30c140b9534d2e40ace5c4e4d4baa10874
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=4cfacb30c140b9534d2e40ace5c4e4d4baa10874

Author: Philippe Gerum r...@xenomai.org
Date:   Sun Oct 26 16:14:19 2014 +0100

cobalt/sched/tp: fix double unlink on thread fallback to FIFO

---

 kernel/cobalt/sched-tp.c |1 -
 1 file changed, 1 deletion(-)

diff --git a/kernel/cobalt/sched-tp.c b/kernel/cobalt/sched-tp.c
index 484e339..d3e7f5f 100644
--- a/kernel/cobalt/sched-tp.c
+++ b/kernel/cobalt/sched-tp.c
@@ -253,7 +253,6 @@ xnsched_tp_set_schedule(struct xnsched *sched,
goto done;
 
list_for_each_entry_safe(thread, tmp, tp-threads, tp_link) {
-   list_del(thread-tp_link);
param.rt.prio = thread-cprio;
xnsched_set_policy(thread, xnsched_class_rt, param);
}


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Jorge Ramirez-Ortiz : drivers/analogy: NI M - 622x ranges changed to bipolar

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 6f3465ff217435c22aebaf3cf9cba4dc78f9c9fe
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=6f3465ff217435c22aebaf3cf9cba4dc78f9c9fe

Author: Jorge Ramirez-Ortiz j...@xenomai.org
Date:   Thu Sep  4 10:35:26 2014 -0400

drivers/analogy: NI M - 622x ranges changed to bipolar

---

 kernel/drivers/analogy/national_instruments/pcimio.c |4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/kernel/drivers/analogy/national_instruments/pcimio.c 
b/kernel/drivers/analogy/national_instruments/pcimio.c
index e7a2ab3..8a3 100644
--- a/kernel/drivers/analogy/national_instruments/pcimio.c
+++ b/kernel/drivers/analogy/national_instruments/pcimio.c
@@ -801,7 +801,7 @@ static ni_board ni_boards[]={
n_aochan:   2,
aobits: 16,
ao_fifo_depth:  8191,
-   .ao_range_table = range_ni_M_622x_ao,
+   .ao_range_table = a4l_range_bipolar10,
reg_type:   ni_reg_622x,
ao_unipolar:0,
ao_speed:   1200,
@@ -819,7 +819,7 @@ static ni_board ni_boards[]={
n_aochan:   2,
aobits: 16,
ao_fifo_depth:  8191,
-   .ao_range_table = range_ni_M_622x_ao,
+   .ao_range_table = a4l_range_bipolar10,
reg_type:   ni_reg_622x,
ao_unipolar:0,
ao_speed:   1200,


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Jorge Ramirez-Ortiz : utils/analogy: calibration - use iniparser

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 68033dcc5bf6c732eba6a43390aca34c9f490e98
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=68033dcc5bf6c732eba6a43390aca34c9f490e98

Author: Jorge Ramirez-Ortiz j...@xenomai.org
Date:   Fri Sep 12 11:55:40 2014 -0400

utils/analogy: calibration - use iniparser

---

 utils/analogy/Makefile.am |4 ++-
 utils/analogy/analogy_calibrate.c |   57 -
 utils/analogy/analogy_calibrate.h |   11 ++-
 utils/analogy/calibration_ni_m.c  |   40 ++
 4 files changed, 103 insertions(+), 9 deletions(-)

diff --git a/utils/analogy/Makefile.am b/utils/analogy/Makefile.am
index fe2f317..40c09f3 100644
--- a/utils/analogy/Makefile.am
+++ b/utils/analogy/Makefile.am
@@ -12,7 +12,9 @@ bin_PROGRAMS = \
 CPPFLAGS = \
@XENO_USER_CFLAGS@  \
-ggdb   \
-   -I$(top_srcdir)/include
+   -I$(top_srcdir)/include \
+   -I$(top_srcdir)/lib/boilerplate 
+
 
 LDFLAGS =
 
diff --git a/utils/analogy/analogy_calibrate.c 
b/utils/analogy/analogy_calibrate.c
index 586a38a..b2ac286 100644
--- a/utils/analogy/analogy_calibrate.c
+++ b/utils/analogy/analogy_calibrate.c
@@ -31,7 +31,7 @@
 #include analogy_calibrate.h
 #include calibration_ni_m.h
 
-
+struct apply_calibration_params params = {.name = NULL,} ;
 struct timespec calibration_start_time;
 static const char *revision = 0.0.1;
 a4l_desc_t descriptor;
@@ -57,28 +57,65 @@ static const struct option options[] = {
.flag = NULL,
},
{
+#define apply_opt  3
+   .name = apply,
+   .has_arg = 1,
+   .flag = NULL,
+   },
+   {
.name = NULL,
}
 };
 
-static void print_usage(void)
+static void
+print_usage(void)
 {
fprintf(stderr, Usage: analogy_calibrate \n
---help: this menu \n
---device /dev/analogyX: analogy device to calibrate 
\n
---output filename : calibration results \n
+--help: this menu \n
+--device /dev/analogyX: analogy 
device to calibrate \n
+--output filename : calibration 
results \n
+--apply filename:subd,channel,range,aref  : apply the 
calibration file \n
+ex: /home/foo/calib.rc:0,1,255,255 - use 255 for dont 
care \n
  );
 }
 
+static int
+apply_calibration_set_globals(char *info)
+{
+   char *p;
+
+   params.name = strtok(info, :);
+   p = strtok(NULL, ,);
+   if (!p)
+   error(EXIT, 0, missing --apply parameter \n);
+   params.subd = strtol(p, NULL, 0);
+
+   p = strtok(NULL, ,);
+   if (!p)
+   error(EXIT, 0, missing --apply parameter \n);
+   params.channel = strtol(p, NULL, 0);
+
+   p = strtok(NULL, ,);
+   if (!p)
+   error(EXIT, 0, missing --apply parameter \n);
+   params.range = strtol(p, NULL, 0);
+
+   p = strtok(NULL, );
+   if (!p)
+   error(EXIT, 0, missing --apply parameter \n);
+   params.aref = strtol(p, NULL, 0);
+
+   return 0;
+}
+
 static void __attribute__ ((constructor)) __analogy_calibrate_init(void)
 {
clock_gettime(CLOCK_MONOTONIC, calibration_start_time);
 }
-
 int main(int argc, char *argv[])
 {
struct sched_param param = {.sched_priority = 99};
-   char *device = NULL, *file = NULL;
+   char *device = NULL, *file = NULL, *apply_info = NULL;
int v, i, fd, err = 0;
struct rlimit rl;
 
@@ -103,12 +140,18 @@ int main(int argc, char *argv[])
error(EXIT, errno, calibration file);
__debug(calibration output: %s \n, file);
break;
+   case apply_opt:
+   apply_info = optarg;
+   break;
default:
print_usage();
exit(EXIT_FAILURE);
}
}
 
+   if (apply_info)
+   apply_calibration_set_globals(apply_info);
+
err = getrlimit(RLIMIT_STACK, rl);
if (!err) {
if (rl.rlim_cur  rl.rlim_max) {
diff --git a/utils/analogy/analogy_calibrate.h 
b/utils/analogy/analogy_calibrate.h
index 1fb548e..c2b539a 100644
--- a/utils/analogy/analogy_calibrate.h
+++ b/utils/analogy/analogy_calibrate.h
@@ -38,8 +38,17 @@ extern struct timespec calibration_start_time;
 extern a4l_desc_t descriptor;
 extern FILE *cal;
 
-#define ARRAY_LEN(a)  (sizeof(a) / sizeof((a)[0]))
+struct apply_calibration_params {
+   int channel;
+   char *name;
+   int range;
+   int subd;
+   int aref;
+};
 
+extern 

[Xenomai-git] Jorge Ramirez-Ortiz : lib/analogy: use stddev to calculate stddev_of_mean

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 50aa0a9aae828ecedaf1d5ff6f875755fe32a9b5
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=50aa0a9aae828ecedaf1d5ff6f875755fe32a9b5

Author: Jorge Ramirez-Ortiz j...@xenomai.org
Date:   Sun Oct 26 10:47:45 2014 -0400

lib/analogy: use stddev to calculate stddev_of_mean

---

 lib/analogy/math.c |   12 ++--
 1 file changed, 2 insertions(+), 10 deletions(-)

diff --git a/lib/analogy/math.c b/lib/analogy/math.c
index c0e2f60..1679ecd 100644
--- a/lib/analogy/math.c
+++ b/lib/analogy/math.c
@@ -449,16 +449,8 @@ void a4l_math_stddev(double *pstddev, double mean, double 
*val, unsigned nr)
  */
 void a4l_math_stddev_of_mean(double *pstddevm, double mean, double *val, 
unsigned nr)
 {
-   double sum, sum_sq;
-   int i;
-
-   for (sum = 0, sum_sq = 0, i = 0; i  nr; i++) {
-   double x = val[i] - mean;
-   sum_sq += x * x;
-   sum += x;
-   }
-
-   *pstddevm = sqrt(((sum_sq - (sum * sum) / nr) / (nr - 1)) / nr);
+   a4l_math_stddev(pstddevm, mean, val, nr);
+   *pstddevm = *pstddevm / sqrt(nr); 
 }
 
 


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Jorge Ramirez-Ortiz : utils/analogy: calibration - implement calibrated insn_read

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 54b8e8c46a1feb0b07cacbc255f63955868cd006
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=54b8e8c46a1feb0b07cacbc255f63955868cd006

Author: Jorge Ramirez-Ortiz j...@xenomai.org
Date:   Fri Oct 24 09:01:09 2014 -0400

utils/analogy: calibration - implement calibrated insn_read

---

 utils/analogy/insn_read.c |   85 +++--
 1 file changed, 82 insertions(+), 3 deletions(-)

diff --git a/utils/analogy/insn_read.c b/utils/analogy/insn_read.c
index 842bddb..3592aac 100644
--- a/utils/analogy/insn_read.c
+++ b/utils/analogy/insn_read.c
@@ -39,6 +39,7 @@ static int idx_subd = -1;
 static int idx_chan;
 static int idx_rng = -1;
 static unsigned int scan_size = SCAN_CNT;
+static char *calibration_file = NULL;
 
 struct option insn_read_opts[] = {
{verbose, no_argument, NULL, 'v'},
@@ -47,6 +48,7 @@ struct option insn_read_opts[] = {
{scan-count, required_argument, NULL, 'S'},
{channel, required_argument, NULL, 'c'},
{range, required_argument, NULL, 'R'},
+   {cal, required_argument, NULL, 'y'},
{raw, no_argument, NULL, 'w'},
{help, no_argument, NULL, 'h'},
{0},
@@ -63,6 +65,7 @@ static void do_print_usage(void)
fprintf(stdout, \t\t -c, --channel: channel to use\n);
fprintf(stdout, \t\t -R, --range: range to use\n);
fprintf(stdout, \t\t -w, --raw: dump data in raw format\n);
+   fprintf(stdout, \t\t -y, --cal: /path/to/calibration.bin \n);
fprintf(stdout, \t\t -h, --help: print this help\n);
 }
 
@@ -118,9 +121,8 @@ static int dump_text(a4l_desc_t *dsc, unsigned char *buf, 
int size)
if (err  0)
goto out;
 
-   for (i = 0; i  tmp_cnt; i++) {
+   for (i = 0; i  tmp_cnt; i++)
fprintf(stdout, fmt, values[i]);
-   }
 
tmp_size += tmp_cnt * width;
}
@@ -162,6 +164,7 @@ static int dump_converted(a4l_desc_t *dsc, unsigned char 
*buf, int size)
goto out;
}
 
+   fprintf(stdout, Non Calibrated values: \n);
while (size - tmp_size  0) {
double values[64];
int i, tmp_cnt = ((size - tmp_size) / width  64) ?
@@ -182,6 +185,78 @@ out:
return err;
 }
 
+static int dump_calibrated(a4l_desc_t *dsc, unsigned char *buf, int size)
+{
+   struct a4l_calibration_data cal_info;
+   struct a4l_polynomial converter;
+   int err = 0, width, tmp_size = 0;
+   a4l_chinfo_t *chan;
+   a4l_rnginfo_t *rng;
+
+
+   /* Retrieve the channel info */
+   err = a4l_get_chinfo(dsc, idx_subd, idx_chan, chan);
+   if (err  0) {
+   fprintf(stderr,
+   insn_read: info for channel %d 
+   on subdevice %d not available (err=%d)\n,
+   idx_chan, idx_subd, err);
+   goto out;
+   }
+
+   /* Retrieve the range info */
+   err = a4l_get_rnginfo(dsc, idx_subd, idx_chan, idx_rng, rng);
+   if (err  0) {
+   fprintf(stderr,
+   insn_read: failed to recover range descriptor\n);
+   goto out;
+   }
+
+   width = a4l_sizeof_chan(chan);
+   if (width  0) {
+   fprintf(stderr,
+   insn_read: incoherent info for channel %d\n,
+   idx_chan);
+   err = width;
+   goto out;
+   }
+
+   err = a4l_read_calibration_file(calibration_file, cal_info);
+   if (err  0) {
+   fprintf(stderr,
+   insn_read: failed to read /tmp/calibration.txt \n);
+   goto out;
+   }
+
+   err = a4l_get_softcal_converter(converter, idx_subd, idx_chan, idx_rng,
+   cal_info);
+   if (err  0) {
+   fprintf(stderr,
+   insn_read: failed to get the softcal converter  \n);
+   goto out;
+   }
+
+   fprintf(stdout, Calibrated values: \n);
+   while (size - tmp_size  0) {
+   double values[64];
+   int i, tmp_cnt = ((size - tmp_size) / width  64) ?
+   64 : ((size - tmp_size) / width);
+
+   err = a4l_rawtodcal(chan, values, buf + tmp_size, tmp_cnt,
+   converter);
+   if (err  0)
+   goto out;
+
+   for (i = 0; i  tmp_cnt; i++)
+   fprintf(stdout, %F\n, values[i]);
+
+   tmp_size += tmp_cnt * width;
+   }
+
+out:
+   return err;
+}
+
 int main(int argc, char *argv[])
 {
int err = 0;
@@ -196,7 +271,7 @@ int main(int argc, char *argv[])
/* Compute arguments */
while ((err = getopt_long(argc,
  argv,
- vrd:s:S:c:R:wh, insn_read_opts,
+   

[Xenomai-git] Jorge Ramirez-Ortiz : utils/analogy: calibration - parse the calibration file

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 07b4608034dc1deff8231a3f51ec211609739764
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=07b4608034dc1deff8231a3f51ec211609739764

Author: Jorge Ramirez-Ortiz j...@xenomai.org
Date:   Wed Sep 17 09:30:13 2014 -0700

utils/analogy: calibration - parse the calibration file

---

 lib/boilerplate/iniparser/iniparser.c |6 +-
 utils/analogy/analogy_calibrate.c |   42 ++--
 utils/analogy/analogy_calibrate.h |  123 +++---
 utils/analogy/calibration_ni_m.c  |  184 -
 utils/analogy/calibration_ni_m.h  |9 +-
 5 files changed, 241 insertions(+), 123 deletions(-)

diff --git a/lib/boilerplate/iniparser/iniparser.c 
b/lib/boilerplate/iniparser/iniparser.c
index 0e1621d..5b2094a 100644
--- a/lib/boilerplate/iniparser/iniparser.c
+++ b/lib/boilerplate/iniparser/iniparser.c
@@ -619,11 +619,13 @@ dictionary * iniparser_load(const char * ininame)
 
case LINE_ERROR:
 #if 0
-warning(anon_scope, iniparser: syntax error in %s (%d):\n,
+printf(iniparser: syntax error in %s (%d):\n,
 ininame,
 lineno);
-warning(anon_scope, - %s\n, line);
+printf( - %s\n, line);
+
 #endif
+
ret = EINVAL;
 errs++ ;
 break;
diff --git a/utils/analogy/analogy_calibrate.c 
b/utils/analogy/analogy_calibrate.c
index b2ac286..8404811 100644
--- a/utils/analogy/analogy_calibrate.c
+++ b/utils/analogy/analogy_calibrate.c
@@ -87,22 +87,22 @@ apply_calibration_set_globals(char *info)
params.name = strtok(info, :);
p = strtok(NULL, ,);
if (!p)
-   error(EXIT, 0, missing --apply parameter \n);
+   error(EXIT, 0, missing --apply parameter subd \n);
params.subd = strtol(p, NULL, 0);
 
p = strtok(NULL, ,);
if (!p)
-   error(EXIT, 0, missing --apply parameter \n);
+   error(EXIT, 0, missing --apply parameter channel \n);
params.channel = strtol(p, NULL, 0);
 
p = strtok(NULL, ,);
if (!p)
-   error(EXIT, 0, missing --apply parameter \n);
+   error(EXIT, 0, missing --apply parameter range \n);
params.range = strtol(p, NULL, 0);
 
p = strtok(NULL, );
if (!p)
-   error(EXIT, 0, missing --apply parameter \n);
+   error(EXIT, 0, missing --apply parameter aref \n);
params.aref = strtol(p, NULL, 0);
 
return 0;
@@ -114,10 +114,8 @@ static void __attribute__ ((constructor)) 
__analogy_calibrate_init(void)
 }
 int main(int argc, char *argv[])
 {
-   struct sched_param param = {.sched_priority = 99};
char *device = NULL, *file = NULL, *apply_info = NULL;
int v, i, fd, err = 0;
-   struct rlimit rl;
 
__debug(version: git commit %s, revision %s \n, GIT_STAMP, revision);
 
@@ -152,26 +150,6 @@ int main(int argc, char *argv[])
if (apply_info)
apply_calibration_set_globals(apply_info);
 
-   err = getrlimit(RLIMIT_STACK, rl);
-   if (!err) {
-   if (rl.rlim_cur  rl.rlim_max) {
-   rl.rlim_cur = rl.rlim_max;
-   err = setrlimit(RLIMIT_STACK, rl);
-   if (err)
-   __debug(setrlimit errno (%d) \n, errno);
-   else
-   __debug(Program Stack Size: %ld MB \n\n, 
rl.rlim_cur/(1024*1024));
-   }
-   }
-
-   err = mlockall(MCL_CURRENT | MCL_FUTURE);
-   if (err  0)
-   error(EXIT, errno, mlockall error);
-
-   err = pthread_setschedparam(pthread_self(), SCHED_FIFO, param);
-   if (err)
-   error(EXIT, 0, pthread_setschedparam failed (0x%x), err);
-
fd = a4l_open(descriptor, device);
if (fd  0)
error(EXIT, 0, open %s failed (%d), device, fd);
@@ -184,17 +162,19 @@ int main(int argc, char *argv[])
/*
 * TODO: modify the meaning of board/driver in the proc
 */
-   push_to_cal_file([platform] \n);
-   push_to_cal_file(driver_name: %s \n, descriptor.board_name);
-   push_to_cal_file(board_name: %s \n, descriptor.driver_name);
+   push_to_cal_file([%s] \n,PLATFORM_STR);
+   push_to_cal_file(DRIVER_STR = %s;\n, descriptor.board_name);
+   push_to_cal_file(BOARD_STR = %s;\n, descriptor.driver_name);
 
err = ni_m_software_calibrate();
if (err)
error(CONT, 0, software calibration failed (%d), err);
 
+   err = ni_m_apply_calibration();
+   if (err)
+   error(CONT, 0, applying calibration failed (%d), err);
+
a4l_close(descriptor);
-   if (cal)
-   fclose(cal);
 
return err;
 }
diff --git a/utils/analogy/analogy_calibrate.h 
b/utils/analogy/analogy_calibrate.h
index c2b539a..4a30997 100644
--- 

[Xenomai-git] Jorge Ramirez-Ortiz : drivers/analogy: NI_M - retrieve the sampling period via A4L_CMD_SIMUL

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 9d5eda59702de396d6bb20158357e4ed2162fefe
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=9d5eda59702de396d6bb20158357e4ed2162fefe

Author: Jorge Ramirez-Ortiz j...@xenomai.org
Date:   Tue Aug 19 14:13:08 2014 -0400

drivers/analogy: NI_M - retrieve the sampling period via A4L_CMD_SIMUL

---

 kernel/drivers/analogy/national_instruments/mio_common.c |   10 ++
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/kernel/drivers/analogy/national_instruments/mio_common.c 
b/kernel/drivers/analogy/national_instruments/mio_common.c
index f0f2abf..e5ccf7a 100644
--- a/kernel/drivers/analogy/national_instruments/mio_common.c
+++ b/kernel/drivers/analogy/national_instruments/mio_common.c
@@ -2067,12 +2067,14 @@ static int ni_ai_cmdtest(struct a4l_subdevice *subd, 
struct a4l_cmd_desc * cmd)
   
cmd-nb_chan)) {
cmd-scan_begin_arg =
ni_min_ai_scan_period_ns(dev, cmd-nb_chan);
-   return -EINVAL;
-   }
-   if (cmd-scan_begin_arg  devpriv-clock_ns * 0xff) {
+
+   if (cmd-scan_begin_arg  devpriv-clock_ns * 0xff)
cmd-scan_begin_arg = devpriv-clock_ns * 0xff;
-   return -EINVAL;
+
+   /* required for calibration */
+   return 0;
}
+
} else if (cmd-scan_begin_src == TRIG_EXT) {
/* external trigger */
unsigned int tmp = CR_CHAN(cmd-scan_begin_arg);


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Jorge Ramirez-Ortiz : lib/analogy: fix a4l_sync_read wait call

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 465302d146d293149f7646b409e6bee28e1af464
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=465302d146d293149f7646b409e6bee28e1af464

Author: Jorge Ramirez-Ortiz j...@xenomai.org
Date:   Thu Aug 21 15:22:05 2014 -0400

lib/analogy: fix a4l_sync_read wait call

---

 lib/analogy/sync.c |4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/analogy/sync.c b/lib/analogy/sync.c
index 6dd49f9..fee5fc9 100644
--- a/lib/analogy/sync.c
+++ b/lib/analogy/sync.c
@@ -211,13 +211,13 @@ int a4l_sync_read(a4l_desc_t * dsc,
.type = A4L_INSN_READ,
.idx_subd = idx_subd,
.chan_desc = chan_desc,
-   .data_size = 0,
+   .data_size = nbyte,
.data = buf},
{
.type = A4L_INSN_WAIT,
.idx_subd = idx_subd,
.chan_desc = chan_desc,
-   .data_size = 1,
+   .data_size = sizeof(unsigned int),
.data = NULL}
};
 


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Jorge Ramirez-Ortiz : drivers/analogy: remove unnecessary lock

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: b82b83556b147741c31187595412ba203de1fcf3
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=b82b83556b147741c31187595412ba203de1fcf3

Author: Jorge Ramirez-Ortiz j...@xenomai.org
Date:   Thu Aug 14 13:41:50 2014 -0400

drivers/analogy: remove unnecessary lock

---

 kernel/drivers/analogy/transfer.c |   13 ++---
 1 file changed, 2 insertions(+), 11 deletions(-)

diff --git a/kernel/drivers/analogy/transfer.c 
b/kernel/drivers/analogy/transfer.c
index 2594f00..bf19c8c 100644
--- a/kernel/drivers/analogy/transfer.c
+++ b/kernel/drivers/analogy/transfer.c
@@ -154,26 +154,17 @@ int a4l_request_irq(struct a4l_device * dev,
unsigned long flags, void *cookie)
 {
int ret;
-   unsigned long __flags;
 
if (dev-transfer.irq_desc.irq != A4L_IRQ_UNUSED)
return -EBUSY;
 
-   /* A spinlock is used so as to prevent race conditions
-  on the field irq of the IRQ descriptor
-  (even if such a case is bound not to happen) */
-   rtdm_lock_get_irqsave(dev-lock, __flags);
-
-   ret = __a4l_request_irq(dev-transfer.irq_desc,
-   irq, handler, flags, cookie);
-
+   ret = __a4l_request_irq(dev-transfer.irq_desc, irq, handler, flags,
+   cookie);
if (ret != 0) {
__a4l_err(a4l_request_irq: IRQ registration failed\n);
dev-transfer.irq_desc.irq = A4L_IRQ_UNUSED;
}
 
-   rtdm_lock_put_irqrestore(dev-lock, __flags);
-
return ret;
 }
 


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Philippe Gerum : cobalt/sched: clarify schedlist header

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 994d9828a036a04b9c54362620b01ee0b97f8641
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=994d9828a036a04b9c54362620b01ee0b97f8641

Author: Philippe Gerum r...@xenomai.org
Date:   Sun Oct 26 18:00:14 2014 +0100

cobalt/sched: clarify schedlist header

---

 kernel/cobalt/sched.c |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/cobalt/sched.c b/kernel/cobalt/sched.c
index 6fdae55..7cc5770 100644
--- a/kernel/cobalt/sched.c
+++ b/kernel/cobalt/sched.c
@@ -1000,7 +1000,7 @@ static int vfile_schedlist_show(struct 
xnvfile_snapshot_iterator *it,
if (p == NULL)
xnvfile_printf(it,
   %-3s  %-6s %-5s  %-8s  %-5s %-8s  %-10s %s\n,
-  CPU, PID, CLASS, PERS, PRI, TIMEOUT,
+  CPU, PID, CLASS, TYPE, PRI, TIMEOUT,
   STAT, NAME);
else {
ksformat(pbuf, sizeof(pbuf), %3d, p-cprio);


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Philippe Gerum : cobalt/heap: add xnstrdup()

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: e7585233e24a089b204230d6f3cc9d4b3a4f3ea1
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=e7585233e24a089b204230d6f3cc9d4b3a4f3ea1

Author: Philippe Gerum r...@xenomai.org
Date:   Mon Oct 27 11:14:11 2014 +0100

cobalt/heap: add xnstrdup()

---

 include/cobalt/kernel/heap.h |   12 
 1 file changed, 12 insertions(+)

diff --git a/include/cobalt/kernel/heap.h b/include/cobalt/kernel/heap.h
index d29778f..916ac8f 100644
--- a/include/cobalt/kernel/heap.h
+++ b/include/cobalt/kernel/heap.h
@@ -19,6 +19,7 @@
 #ifndef _COBALT_KERNEL_HEAP_H
 #define _COBALT_KERNEL_HEAP_H
 
+#include linux/string.h
 #include cobalt/kernel/lock.h
 #include cobalt/kernel/list.h
 #include cobalt/uapi/kernel/types.h
@@ -142,6 +143,17 @@ void xnheap_free(struct xnheap *heap, void *block);
 
 int xnheap_check_block(struct xnheap *heap, void *block);
 
+static inline char *xnstrdup(const char *s)
+{
+   char *p;
+
+   p = xnmalloc(strlen(s) + 1);
+   if (p == NULL)
+   return NULL;
+
+   return strcpy(p, s);
+}
+
 /** @} */
 
 #endif /* !_COBALT_KERNEL_HEAP_H */


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Philippe Gerum : bootstrap

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 0e1dc8cdfeb877812f8570974990bde37261367b
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=0e1dc8cdfeb877812f8570974990bde37261367b

Author: Philippe Gerum r...@xenomai.org
Date:   Mon Oct 27 14:11:04 2014 +0100

bootstrap

---

 include/cobalt/kernel/rtdm/Makefile.in |1 +
 lib/analogy/Makefile.in|   30 --
 lib/boilerplate/Makefile.in|   53 ++--
 utils/analogy/Makefile.in  |   46 ---
 4 files changed, 107 insertions(+), 23 deletions(-)

diff --git a/include/cobalt/kernel/rtdm/Makefile.in 
b/include/cobalt/kernel/rtdm/Makefile.in
index 1cc5915..81d84d1 100644
--- a/include/cobalt/kernel/rtdm/Makefile.in
+++ b/include/cobalt/kernel/rtdm/Makefile.in
@@ -350,6 +350,7 @@ noinst_HEADERS = \
autotune.h  \
can.h   \
cobalt.h\
+   compat.h\
driver.h\
fd.h\
ipc.h   \
diff --git a/lib/analogy/Makefile.in b/lib/analogy/Makefile.in
index 832f43d..f42dbde 100644
--- a/lib/analogy/Makefile.in
+++ b/lib/analogy/Makefile.in
@@ -125,9 +125,10 @@ am__uninstall_files_from_dir = { \
   }
 am__installdirs = $(DESTDIR)$(libdir)
 LTLIBRARIES = $(lib_LTLIBRARIES)
-libanalogy_la_LIBADD =
+libanalogy_la_DEPENDENCIES = ../boilerplate/libboilerplate.la
 am_libanalogy_la_OBJECTS = libanalogy_la-async.lo \
libanalogy_la-descriptor.lo libanalogy_la-info.lo \
+   libanalogy_la-math.lo libanalogy_la-calibration.lo \
libanalogy_la-range.lo libanalogy_la-sync.lo \
libanalogy_la-sys.lo
 libanalogy_la_OBJECTS = $(am_libanalogy_la_OBJECTS)
@@ -374,14 +375,21 @@ libanalogy_la_SOURCES = \
descriptor.c\
info.c  \
internal.h  \
+   math.c  \
+   calibration.c   \
range.c \
root_leaf.h \
sync.c  \
sys.c
 
 libanalogy_la_CPPFLAGS = \
-   @XENO_USER_CFLAGS@  \
-   -I$(top_srcdir)/include
+   @XENO_USER_CFLAGS@  \
+   -I$(top_srcdir)/include \
+   -I$(top_srcdir)/lib/boilerplate 
+
+libanalogy_la_LIBADD = \
+   ../boilerplate/libboilerplate.la\
+   -lm
 
 all: all-am
 
@@ -463,8 +471,10 @@ distclean-compile:
-rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ 
@am__quote@./$(DEPDIR)/libanalogy_la-async.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ 
@am__quote@./$(DEPDIR)/libanalogy_la-calibration.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ 
@am__quote@./$(DEPDIR)/libanalogy_la-descriptor.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ 
@am__quote@./$(DEPDIR)/libanalogy_la-info.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ 
@am__quote@./$(DEPDIR)/libanalogy_la-math.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ 
@am__quote@./$(DEPDIR)/libanalogy_la-range.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ 
@am__quote@./$(DEPDIR)/libanalogy_la-sync.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ 
@am__quote@./$(DEPDIR)/libanalogy_la-sys.Plo@am__quote@
@@ -511,6 +521,20 @@ libanalogy_la-info.lo: info.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@  DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC 
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) 
$(DEFAULT_INCLUDES) $(INCLUDES) $(libanalogy_la_CPPFLAGS) $(CPPFLAGS) 
$(AM_CFLAGS) $(CFLAGS) -c -o libanalogy_la-info.lo `test -f 'info.c' || echo 
'$(srcdir)/'`info.c
 
+libanalogy_la-math.lo: math.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC 
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) 
$(DEFAULT_INCLUDES) $(INCLUDES) $(libanalogy_la_CPPFLAGS) $(CPPFLAGS) 
$(AM_CFLAGS) $(CFLAGS) -MT libanalogy_la-math.lo -MD -MP -MF 
$(DEPDIR)/libanalogy_la-math.Tpo -c -o libanalogy_la-math.lo `test -f 'math.c' 
|| echo '$(srcdir)/'`math.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libanalogy_la-math.Tpo 
$(DEPDIR)/libanalogy_la-math.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@  $(AM_V_CC)source='math.c' 
object='libanalogy_la-math.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@  DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC 
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) 
$(DEFAULT_INCLUDES) $(INCLUDES) $(libanalogy_la_CPPFLAGS) $(CPPFLAGS) 
$(AM_CFLAGS) $(CFLAGS) -c -o libanalogy_la-math.lo `test -f 'math.c' || echo 
'$(srcdir)/'`math.c
+
+libanalogy_la-calibration.lo: calibration.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC 
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) 
$(DEFAULT_INCLUDES) $(INCLUDES) $(libanalogy_la_CPPFLAGS) $(CPPFLAGS) 
$(AM_CFLAGS) $(CFLAGS) -MT libanalogy_la-calibration.lo -MD -MP -MF 
$(DEPDIR)/libanalogy_la-calibration.Tpo -c -o libanalogy_la-calibration.lo 
`test -f 

[Xenomai-git] Jorge Ramirez-Ortiz : drivers/analogy: disable chanlist check on calibration instructions

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: c39b74040ab085a03ec9078baffecab7bed758d1
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=c39b74040ab085a03ec9078baffecab7bed758d1

Author: Jorge Ramirez-Ortiz j...@xenomai.org
Date:   Wed Aug 20 15:58:07 2014 -0400

drivers/analogy: disable chanlist check on calibration instructions

---

 kernel/drivers/analogy/instruction.c |   10 ++
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/kernel/drivers/analogy/instruction.c 
b/kernel/drivers/analogy/instruction.c
index 95c4419..7e7704f 100644
--- a/kernel/drivers/analogy/instruction.c
+++ b/kernel/drivers/analogy/instruction.c
@@ -228,10 +228,12 @@ int a4l_do_insn(struct a4l_device_context * cxt, struct 
a4l_kernel_instruction *
}
 
/* Checks the channel descriptor */
-   ret = a4l_check_chanlist(dev-transfer.subds[dsc-idx_subd],
-1, dsc-chan_desc);
-   if (ret  0)
-   return ret;
+   if ((subd-flags  A4L_SUBD_TYPES) != A4L_SUBD_CALIB) {
+   ret = a4l_check_chanlist(dev-transfer.subds[dsc-idx_subd],
+1, dsc-chan_desc);
+   if (ret  0)
+   return ret;
+   }
 
/* Choose the proper handler, we can check the pointer because
   the subdevice was memset to 0 at allocation time */


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Jorge Ramirez-Ortiz : drivers/analogy: let A4L_CMD_SIMUL calls return driver specific values

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: ca84782351a929ed78baee05fffd3accfce31db0
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=ca84782351a929ed78baee05fffd3accfce31db0

Author: Jorge Ramirez-Ortiz j...@xenomai.org
Date:   Tue Aug 19 14:02:23 2014 -0400

drivers/analogy: let A4L_CMD_SIMUL calls return driver specific values

---

 kernel/drivers/analogy/command.c |   17 +
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/kernel/drivers/analogy/command.c b/kernel/drivers/analogy/command.c
index 1c544bf..213591d 100644
--- a/kernel/drivers/analogy/command.c
+++ b/kernel/drivers/analogy/command.c
@@ -26,7 +26,6 @@
 #include rtdm/analogy/device.h
 
 /* --- Command descriptor management functions --- */
-
 int a4l_fill_cmddesc(struct a4l_device_context * cxt, struct a4l_cmd_desc * 
desc, void *arg)
 {
int ret = 0;
@@ -284,11 +283,11 @@ int a4l_check_specific_cmdcnt(struct a4l_device_context * 
cxt, struct a4l_cmd_de
 
 /* --- IOCTL / FOPS function --- */
 
-int a4l_ioctl_cmd(struct a4l_device_context * cxt, void *arg)
+int a4l_ioctl_cmd(struct a4l_device_context * ctx, void *arg)
 {
int ret = 0, simul_flag = 0;
struct a4l_cmd_desc *cmd_desc = NULL;
-   struct a4l_device *dev = a4l_get_dev(cxt);
+   struct a4l_device *dev = a4l_get_dev(ctx);
struct a4l_subdevice *subd;
 
/* The command launching cannot be done in real-time because
@@ -310,12 +309,12 @@ int a4l_ioctl_cmd(struct a4l_device_context * cxt, void 
*arg)
memset(cmd_desc, 0, sizeof(struct a4l_cmd_desc));
 
/* Gets the command */
-   ret = a4l_fill_cmddesc(cxt, cmd_desc, arg);
+   ret = a4l_fill_cmddesc(ctx, cmd_desc, arg);
if (ret != 0)
goto out_ioctl_cmd;
 
/* Checks the command */
-   ret = a4l_check_cmddesc(cxt, cmd_desc);
+   ret = a4l_check_cmddesc(ctx, cmd_desc);
if (ret != 0)
goto out_ioctl_cmd;
 
@@ -323,7 +322,7 @@ int a4l_ioctl_cmd(struct a4l_device_context * cxt, void 
*arg)
if (ret != 0)
goto out_ioctl_cmd;
 
-   ret = a4l_check_specific_cmdcnt(cxt, cmd_desc);
+   ret = a4l_check_specific_cmdcnt(ctx, cmd_desc);
if (ret != 0)
goto out_ioctl_cmd;
 
@@ -347,7 +346,7 @@ int a4l_ioctl_cmd(struct a4l_device_context * cxt, void 
*arg)
}
 
/* Gets the transfer system ready */
-   ret = a4l_setup_buffer(cxt, cmd_desc);
+   ret = a4l_setup_buffer(ctx, cmd_desc);
if (ret  0)
goto out_ioctl_cmd;
 
@@ -355,12 +354,14 @@ int a4l_ioctl_cmd(struct a4l_device_context * cxt, void 
*arg)
ret = subd-do_cmd(subd, cmd_desc);
 
if (ret != 0) {
-   a4l_cancel_buffer(cxt);
+   a4l_cancel_buffer(ctx);
goto out_ioctl_cmd;
}
 
 out_ioctl_cmd:
if (ret != 0 || simul_flag == 1) {
+   rtdm_safe_copy_to_user(rtdm_private_to_fd(ctx), arg, cmd_desc,
+   sizeof(struct a4l_cmd_desc));
a4l_free_cmddesc(cmd_desc);
rtdm_free(cmd_desc);
}


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Jorge Ramirez-Ortiz : utils/analogy: NI-M software calibration [Part I]

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 047c0fe54a2a751bd5bf3e3c7f857684845656b8
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=047c0fe54a2a751bd5bf3e3c7f857684845656b8

Author: Jorge Ramirez-Ortiz j...@xenomai.org
Date:   Wed Aug 13 12:24:16 2014 -0400

utils/analogy: NI-M software calibration [Part I]

Generates a calibration file as per the comedi implementation.

---

 utils/analogy/Makefile.am |   24 +-
 utils/analogy/analogy_calibrate.c |  157 +
 utils/analogy/analogy_calibrate.h |  182 +
 utils/analogy/calibration_ni_m.c  | 1406 +
 utils/analogy/calibration_ni_m.h  |  280 
 5 files changed, 2048 insertions(+), 1 deletion(-)

diff --git a/utils/analogy/Makefile.am b/utils/analogy/Makefile.am
index c731b7a..fe2f317 100644
--- a/utils/analogy/Makefile.am
+++ b/utils/analogy/Makefile.am
@@ -1,4 +1,4 @@
-sbin_PROGRAMS = analogy_config
+sbin_PROGRAMS = analogy_config analogy_calibrate
 
 bin_PROGRAMS = \
cmd_read \
@@ -29,6 +29,24 @@ analogy_config_LDADD = \
@XENO_USER_LDADD@   \
-lpthread -lrt
 
+analogy_calibrate_SOURCES = analogy_calibrate.c calibration_ni_m.c
+analogy_calibrate.c: git-stamp.h calibration_ni_m.h
+git-stamp.h: git-stamp
+   @set -x; if test -r $(top_srcdir)/.git; then
\
+ stamp=`git --git-dir=$(top_srcdir)/.git rev-list --abbrev-commit -1 
HEAD`;\
+ if test \! -s $@ || grep -wvq $$stamp $@; then
\
+   date=`git --git-dir=$(top_srcdir)/.git log -1 $$stamp 
--pretty=format:%ci`; \
+   echo #define GIT_STAMP \#$$stamp ($$date)\  $@;
\
+ fi;   
\
+   elif test \! -r $@ -o -s $@; then   
\
+   rm -f $@  touch $@;   
\
+   fi; true
+analogy_calibrate_LDADD = \
+   ../../lib/analogy/libanalogy.la \
+   ../../lib/cobalt/libcobalt.la   \
+   @XENO_USER_LDADD@   \
+   -lpthread -lrt -lgsl -lgslcblas -lm
+
 cmd_read_SOURCES = cmd_read.c
 cmd_read_LDADD = \
../../lib/analogy/libanalogy.la \
@@ -77,3 +95,7 @@ insn_bits_LDADD = \
 
 wf_generate_SOURCES = wf_generate.c
 wf_generate_LDADD = ./libwaveform.la -lm
+
+
+.PHONY: git-stamp
+
diff --git a/utils/analogy/analogy_calibrate.c 
b/utils/analogy/analogy_calibrate.c
new file mode 100644
index 000..586a38a
--- /dev/null
+++ b/utils/analogy/analogy_calibrate.c
@@ -0,0 +1,157 @@
+/**
+ * @file
+ * Analogy for Linux, calibration program
+ *
+ * @note Copyright (C) 2014 Jorge A. Ramirez-Ortiz j...@xenomai.org
+ *
+ * from original code from the Comedi project
+ *
+ * Xenomai is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Xenomai 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Xenomai; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include sys/time.h
+#include sys/resource.h
+#include getopt.h
+#include pthread.h
+#include sys/mman.h
+#include xeno_config.h
+#include rtdm/analogy.h
+#include analogy_calibrate.h
+#include calibration_ni_m.h
+
+
+struct timespec calibration_start_time;
+static const char *revision = 0.0.1;
+a4l_desc_t descriptor;
+FILE *cal = NULL;
+
+static const struct option options[] = {
+   {
+#define help_opt   0
+   .name = help,
+   .has_arg = 0,
+   .flag = NULL,
+   },
+   {
+#define device_opt 1
+   .name = device,
+   .has_arg = 1,
+   .flag = NULL,
+   },
+   {
+#define output_opt 2
+   .name = output,
+   .has_arg = 1,
+   .flag = NULL,
+   },
+   {
+   .name = NULL,
+   }
+};
+
+static void print_usage(void)
+{
+   fprintf(stderr, Usage: analogy_calibrate \n
+--help: this menu \n
+--device /dev/analogyX: analogy device to calibrate 
\n
+--output filename : calibration results \n
+ );
+}
+
+static void __attribute__ ((constructor)) __analogy_calibrate_init(void)
+{
+   clock_gettime(CLOCK_MONOTONIC, calibration_start_time);
+}
+
+int main(int argc, char *argv[])
+{
+   struct sched_param 

[Xenomai-git] Jorge Ramirez-Ortiz : utils/analogy: calibration - use analogy lib to read /write the calibration file

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: fb962115628721bc52ae05923b67185c4005ee37
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=fb962115628721bc52ae05923b67185c4005ee37

Author: Jorge Ramirez-Ortiz j...@xenomai.org
Date:   Sat Oct 11 14:25:26 2014 -0400

utils/analogy: calibration - use analogy lib to read/write the calibration file

---

 include/rtdm/analogy.h|   11 +
 include/rtdm/uapi/analogy.h   |   28 +++
 lib/analogy/Makefile.am   |   11 +-
 lib/analogy/calibration.c |  211 +++
 lib/analogy/calibration.h |   44 
 utils/analogy/Makefile.am |5 +-
 utils/analogy/analogy_calibrate.c |   73 +--
 utils/analogy/analogy_calibrate.h |  131 +---
 utils/analogy/calibration_ni_m.c  |  422 -
 utils/analogy/calibration_ni_m.h  |   36 +---
 10 files changed, 456 insertions(+), 516 deletions(-)

diff --git a/include/rtdm/analogy.h b/include/rtdm/analogy.h
index 57f2ec0..fd26f58 100644
--- a/include/rtdm/analogy.h
+++ b/include/rtdm/analogy.h
@@ -21,9 +21,12 @@
 #ifndef _RTDM_ANALOGY_H
 #define _RTDM_ANALOGY_H
 
+#include stdio.h
 #include sys/types.h
 #include rtdm/uapi/analogy.h
 
+#include boilerplate/list.h
+
 /*!
   @addtogroup analogy_lib_descriptor
   @{
@@ -227,6 +230,14 @@ int a4l_ftoraw(a4l_chinfo_t *chan,
 int a4l_dtoraw(a4l_chinfo_t *chan,
   a4l_rnginfo_t *rng, void *dst, double *src, int cnt);
 
+void a4l_write_calibration_file(FILE *dst, struct list *l,
+   struct a4l_calibration_subdev *subd,
+   a4l_desc_t *desc);
+
+int a4l_read_calibration_file(char *name, struct a4l_calibration_data *data);
+
+
+
 #endif /* !DOXYGEN_CPP */
 
 #ifdef __cplusplus
diff --git a/include/rtdm/uapi/analogy.h b/include/rtdm/uapi/analogy.h
index 9806c82..669ded7 100644
--- a/include/rtdm/uapi/analogy.h
+++ b/include/rtdm/uapi/analogy.h
@@ -706,4 +706,32 @@ typedef struct a4l_instruction_list a4l_insnlst_t;
 
 /*! @} analogy_lib_sync1 */
 
+struct a4l_calibration_subdev {
+   a4l_sbinfo_t *info;
+   int slen;
+   int idx;
+   char *name;
+};
+
+struct a4l_calibration_subdev_data {
+   int index;
+   int channel;
+   int range;
+   int expansion;
+   int nb_coeff;
+   double *coeff;
+
+};
+
+struct a4l_calibration_data {
+   char *driver_name;
+   char *board_name;
+   int nb_ai;
+   struct a4l_calibration_subdev_data *ai;
+   int nb_ao;
+   struct a4l_calibration_subdev_data *ao;
+};
+
+
+
 #endif /* _RTDM_UAPI_ANALOGY_H */
diff --git a/lib/analogy/Makefile.am b/lib/analogy/Makefile.am
index 4d242ff..500453d 100644
--- a/lib/analogy/Makefile.am
+++ b/lib/analogy/Makefile.am
@@ -7,11 +7,16 @@ libanalogy_la_SOURCES =   \
descriptor.c\
info.c  \
internal.h  \
+   calibration.c   \
range.c \
root_leaf.h \
sync.c  \
sys.c
 
-libanalogy_la_CPPFLAGS =   \
-   @XENO_USER_CFLAGS@  \
-   -I$(top_srcdir)/include
+libanalogy_la_CPPFLAGS =   \
+   @XENO_USER_CFLAGS@  \
+   -I$(top_srcdir)/include \
+   -I$(top_srcdir)/lib/boilerplate 
+
+libanalogy_la_LIBADD = \
+   ../boilerplate/libboilerplate.la
diff --git a/lib/analogy/calibration.c b/lib/analogy/calibration.c
new file mode 100644
index 000..74b2789
--- /dev/null
+++ b/lib/analogy/calibration.c
@@ -0,0 +1,211 @@
+#include rtdm/analogy.h
+#include stdio.h
+#include errno.h
+#include wordexp.h
+#include iniparser/iniparser.h
+#include boilerplate/list.h
+#include calibration.h
+
+#define ARRAY_LEN(a)  (sizeof(a) / sizeof((a)[0]))
+
+static inline int read_dbl(double *d, struct _dictionary_ *f,const char *subd,
+  int subd_idx, char *type, int type_idx)
+{
+   char *str;
+   int ret;
+
+   /* if only contains doubles as coefficients */
+   if (strncmp(type, COEFF_STR, strlen(COEFF_STR) != 0))
+   return -ENOENT;
+
+   ret = asprintf(str, COEFF_FMT, subd, subd_idx, type, type_idx);
+   if (ret  0)
+   return ret;
+
+   *d = iniparser_getdouble(f, str, -255.0);
+   if (*d == -255.0)
+   ret = -ENOENT;
+   free(str);
+
+   return ret;
+}
+
+static inline int read_int(int *val, struct _dictionary_ *f, const char *subd,
+  int subd_idx, char *type)
+{
+   char *str;
+   int ret;
+
+   ret = (subd_idx = 0) ?
+ asprintf(str, ELEMENT_FIELD_FMT, subd, subd_idx, type):
+ asprintf(str, ELEMENT_FMT, subd, type);
+   if (ret  0)
+   return ret;
+
+   *val = iniparser_getint(f, str, 0x);
+   if (*val == 0x)
+   ret = -ENOENT;
+   free(str);
+
+   return ret;
+}
+
+static inline int read_str(char **val, struct _dictionary_ *f, const char 
*subd,
+ 

[Xenomai-git] Jorge Ramirez-Ortiz : lib/analogy: calibration - a4l_rawtodcal a4l_dcaltoraw

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 029424c470f6697dca77b9e693a8669d66474d54
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=029424c470f6697dca77b9e693a8669d66474d54

Author: Jorge Ramirez-Ortiz j...@xenomai.org
Date:   Fri Oct 24 08:59:31 2014 -0400

lib/analogy: calibration - a4l_rawtodcal  a4l_dcaltoraw

---

 include/rtdm/analogy.h  |9 ++
 include/rtdm/uapi/analogy.h |6 ++
 lib/analogy/calibration.c   |  237 ++-
 lib/analogy/math.c  |8 +-
 utils/analogy/Makefile.am   |2 +-
 5 files changed, 252 insertions(+), 10 deletions(-)

diff --git a/include/rtdm/analogy.h b/include/rtdm/analogy.h
index a87ce54..066d05a 100644
--- a/include/rtdm/analogy.h
+++ b/include/rtdm/analogy.h
@@ -232,6 +232,15 @@ int a4l_dtoraw(a4l_chinfo_t *chan,
 
 int a4l_read_calibration_file(char *name, struct a4l_calibration_data *data);
 
+int a4l_get_softcal_converter(struct a4l_polynomial *converter,
+ int subd, int chan, int range,
+ struct a4l_calibration_data *data );
+
+int a4l_rawtodcal(a4l_chinfo_t *chan, double *dst, void *src,
+ int cnt, struct a4l_polynomial *converter);
+int a4l_dcaltoraw(a4l_chinfo_t * chan, void *dst, double *src, int cnt,
+ struct a4l_polynomial *converter);
+
 int a4l_math_polyfit(unsigned order, double *r,double orig,
 const unsigned dim, double *x, double *y);
 
diff --git a/include/rtdm/uapi/analogy.h b/include/rtdm/uapi/analogy.h
index a0a1e59..2d53168 100644
--- a/include/rtdm/uapi/analogy.h
+++ b/include/rtdm/uapi/analogy.h
@@ -732,6 +732,12 @@ struct a4l_calibration_data {
struct a4l_calibration_subdev_data *ao;
 };
 
+struct a4l_polynomial {
+   int expansion;
+   int order;
+   int nb_coeff;
+   double *coeff;
+};
 
 
 #endif /* _RTDM_UAPI_ANALOGY_H */
diff --git a/lib/analogy/calibration.c b/lib/analogy/calibration.c
index dcec16d..9fd944c 100644
--- a/lib/analogy/calibration.c
+++ b/lib/analogy/calibration.c
@@ -20,6 +20,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
 
+#include math.h
 #include rtdm/analogy.h
 #include stdio.h
 #include errno.h
@@ -28,8 +29,39 @@
 #include boilerplate/list.h
 #include calibration.h
 
+
 #define ARRAY_LEN(a)  (sizeof(a) / sizeof((a)[0]))
 
+static lsampl_t data32_get(void *src)
+{
+   return (lsampl_t) * ((lsampl_t *) (src));
+}
+
+static lsampl_t data16_get(void *src)
+{
+   return (lsampl_t) * ((sampl_t *) (src));
+}
+
+static lsampl_t data8_get(void *src)
+{
+   return (lsampl_t) * ((unsigned char *)(src));
+}
+
+static void data32_set(void *dst, lsampl_t val)
+{
+   *((lsampl_t *) (dst)) = val;
+}
+
+static void data16_set(void *dst, lsampl_t val)
+{
+   *((sampl_t *) (dst)) = (sampl_t) (0x  val);
+}
+
+static void data8_set(void *dst, lsampl_t val)
+{
+   *((unsigned char *)(dst)) = (unsigned char)(0xff  val);
+}
+
 static inline int read_dbl(double *d, struct _dictionary_ *f,const char *subd,
   int subd_idx, char *type, int type_idx)
 {
@@ -73,7 +105,7 @@ static inline int read_int(int *val, struct _dictionary_ *f, 
const char *subd,
 }
 
 static inline int read_str(char **val, struct _dictionary_ *f, const char 
*subd,
-  const char *type)
+  const char *type)
 {
char *str;
int ret;
@@ -105,7 +137,7 @@ static inline void write_calibration(FILE *file, char *fmt, 
...)
 
 void
 write_calibration_file(FILE *dst, struct list *l,
-  struct a4l_calibration_subdev *subd, a4l_desc_t *desc)
+  struct a4l_calibration_subdev *subd, a4l_desc_t *desc)
 {
struct subdevice_calibration_node *e, *t;
int i, j = 0;
@@ -205,7 +237,7 @@ int a4l_read_calibration_file(char *name, struct 
a4l_calibration_data *data)
if (strncmp(subdevice[k], AI_SUBD_STR,
strlen(AI_SUBD_STR)) == 0) {
data-ai = malloc(nb_elements *
-  sizeof(struct a4l_calibration_subdev_data));
+ sizeof(struct 
a4l_calibration_subdev_data));
data-nb_ai = nb_elements;
p  = data-ai;
}
@@ -213,7 +245,7 @@ int a4l_read_calibration_file(char *name, struct 
a4l_calibration_data *data)
if (strncmp(subdevice[k], AO_SUBD_STR,
strlen(AO_SUBD_STR)) == 0) {
data-ao = malloc(nb_elements *
-  sizeof(struct a4l_calibration_subdev_data));
+ sizeof(struct 
a4l_calibration_subdev_data));
data-nb_ao = nb_elements;
p = data-ao;
}
@@ -232,7 +264,7 @@ int a4l_read_calibration_file(char *name, struct 

[Xenomai-git] Philippe Gerum : smokey/sched-quota: force affinity on the test CPU

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: a0d78580975974b94795e3a29b0a1704d7b7f785
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=a0d78580975974b94795e3a29b0a1704d7b7f785

Author: Philippe Gerum r...@xenomai.org
Date:   Mon Oct 27 08:58:15 2014 +0100

smokey/sched-quota: force affinity on the test CPU

---

 testsuite/smokey/sched-quota/sched-quota.c |7 +++
 1 file changed, 7 insertions(+)

diff --git a/testsuite/smokey/sched-quota/sched-quota.c 
b/testsuite/smokey/sched-quota/sched-quota.c
index e8f4347..da1c471 100644
--- a/testsuite/smokey/sched-quota/sched-quota.c
+++ b/testsuite/smokey/sched-quota/sched-quota.c
@@ -270,8 +270,15 @@ static int run_sched_quota(struct smokey_test *t, int 
argc, char *const argv[])
pthread_t me = pthread_self();
struct sched_param param;
int ret, quota = 0;
+   cpu_set_t affinity;
double effective;
 
+   CPU_ZERO(affinity);
+   CPU_SET(0, affinity);
+   ret = sched_setaffinity(0, sizeof(affinity), affinity);
+   if (ret)
+   error(1, errno, sched_setaffinity);
+
smokey_parse_args(t, argc, argv);
pthread_mutex_init(lock, NULL);
pthread_cond_init(barrier, NULL);


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Jorge Ramirez-Ortiz : rtdm/uapi: define PACK_FLAGS using previous definition of PACK

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 8ec0c54431ac402be811a5501c2a01658e4fdad2
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=8ec0c54431ac402be811a5501c2a01658e4fdad2

Author: Jorge Ramirez-Ortiz j...@xenomai.org
Date:   Thu Sep 11 18:03:07 2014 -0400

rtdm/uapi: define PACK_FLAGS using previous definition of PACK

---

 include/rtdm/uapi/analogy.h |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/rtdm/uapi/analogy.h b/include/rtdm/uapi/analogy.h
index 458d5f7..9806c82 100644
--- a/include/rtdm/uapi/analogy.h
+++ b/include/rtdm/uapi/analogy.h
@@ -248,7 +248,7 @@ typedef struct a4l_dev_info a4l_dvinfo_t;
 /**
  * Channel + range + reference + flags definition macro
  */
-#define PACK_FLAGS(a, b, c, d) (CHAN(a) | RNG(b) | AREF(c) | FLAGS(d))
+#define PACK_FLAGS(a, b, c, d) (PACK(a, b, c) | FLAGS(d))
 
 /**
  * Analog reference is analog ground


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Jorge Ramirez-Ortiz : drivers/analogy: fix warning

2014-10-27 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: c386253f4c5869abf88d5d7b1271da501f8d0f6b
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=c386253f4c5869abf88d5d7b1271da501f8d0f6b

Author: Jorge Ramirez-Ortiz j...@xenomai.org
Date:   Tue Aug 26 13:51:08 2014 -0400

drivers/analogy: fix warning

---

 kernel/drivers/analogy/instruction.c |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/drivers/analogy/instruction.c 
b/kernel/drivers/analogy/instruction.c
index 7e7704f..1cbdb14 100644
--- a/kernel/drivers/analogy/instruction.c
+++ b/kernel/drivers/analogy/instruction.c
@@ -205,7 +205,7 @@ int a4l_do_special_insn(struct a4l_device_context * cxt, 
struct a4l_kernel_instr
 
 int a4l_do_insn(struct a4l_device_context * cxt, struct a4l_kernel_instruction 
* dsc)
 {
-   int ret;
+   int ret = 0;
struct a4l_subdevice *subd;
struct a4l_device *dev = a4l_get_dev(cxt);
int (*hdlr) (struct a4l_subdevice *, struct a4l_kernel_instruction *) = 
NULL;


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git