[Xenomai-git] Philippe Gerum : drivers/can/raw: fix uninit flags in socket descriptor
Module: xenomai-3 Branch: next Commit: bc3e48335b63ebd049c9edfe5ba759c99d746b03 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=bc3e48335b63ebd049c9edfe5ba759c99d746b03 Author: Philippe GerumDate: Wed Sep 9 21:06:27 2015 +0200 drivers/can/raw: fix uninit flags in socket descriptor --- kernel/drivers/can/rtcan_socket.c |1 + 1 file changed, 1 insertion(+) diff --git a/kernel/drivers/can/rtcan_socket.c b/kernel/drivers/can/rtcan_socket.c index 3c73fba..edd4619 100644 --- a/kernel/drivers/can/rtcan_socket.c +++ b/kernel/drivers/can/rtcan_socket.c @@ -49,6 +49,7 @@ void rtcan_socket_init(struct rtdm_fd *fd) sock->flist = NULL; sock->err_mask = 0; sock->rx_buf_full = 0; +sock->flags = 0; #ifdef CONFIG_XENO_DRIVERS_CAN_LOOPBACK sock->loopback = 1; #endif ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Philippe Gerum : demo/posix/can-rtt: sanitize
Module: xenomai-3 Branch: next Commit: 921558fc35ba9a213020aaa1b48195dd4f9ec782 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=921558fc35ba9a213020aaa1b48195dd4f9ec782 Author: Philippe GerumDate: Thu Sep 10 09:49:41 2015 +0200 demo/posix/can-rtt: sanitize --- demo/posix/can-rtt.c | 23 +++ 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/demo/posix/can-rtt.c b/demo/posix/can-rtt.c index 0a3dff8..36cdfbc 100644 --- a/demo/posix/can-rtt.c +++ b/demo/posix/can-rtt.c @@ -100,9 +100,7 @@ static void *transmitter(void *arg) frame.can_id = can_id; frame.can_dlc = sizeof(*rtt_time); -#ifdef CONFIG_XENO_COBALT pthread_setname_np(pthread_self(), "rtcan_rtt_transmitter"); -#endif pthread_setschedparam(pthread_self(), SCHED_FIFO, ); clock_gettime(CLOCK_MONOTONIC, _period); @@ -147,9 +145,7 @@ static void *receiver(void *arg) struct rtt_stat rtt_stat = {0, 100LL, -100LL, 0, 0, 0}; -#ifdef CONFIG_XENO_COBALT pthread_setname_np(pthread_self(), "rtcan_rtt_receiver"); -#endif pthread_setschedparam(pthread_self(), SCHED_FIFO, ); rtt_stat.counts_per_sec = 100 / cycle; @@ -197,6 +193,8 @@ static void *receiver(void *arg) static void catch_signal(int sig) { mq_close(mq); +close(rxsock); +close(txsock); } @@ -210,7 +208,7 @@ int main(int argc, char *argv[]) struct rtt_stat rtt_stat; char mqname[32]; char *txdev, *rxdev; -struct ifreq ifr; +struct can_ifreq ifr; int ret, opt; struct option long_options[] = { @@ -394,23 +392,16 @@ int main(int argc, char *argv[]) printf("shutting down\n"); /* Important: First close the sockets! */ -while ((close(rxsock) < 0) && (errno == EAGAIN)) { - printf("RX socket busy - waiting...\n"); - sleep(1); -} -while ((close(txsock) < 0) && (errno == EAGAIN)) { - printf("TX socket busy - waiting...\n"); - sleep(1); -} - +close(rxsock); +close(txsock); pthread_join(txthread, NULL); -pthread_kill(rxthread, SIGHUP); +pthread_cancel(rxthread); pthread_join(rxthread, NULL); return 0; failure4: -pthread_kill(rxthread, SIGHUP); +pthread_cancel(rxthread); pthread_join(rxthread, NULL); failure3: mq_close(mq); ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Don Mahurin : cobalt/arm64: fix build for mismatched printf type (%lx, u64) on arm64.
Module: xenomai-3 Branch: arm64 Commit: 219f81a78b134cb15373b664449f4721842cf587 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=219f81a78b134cb15373b664449f4721842cf587 Author: Don MahurinDate: Wed Sep 2 13:48:36 2015 -0700 cobalt/arm64: fix build for mismatched printf type (%lx,u64) on arm64. pc and orig_r0 are u64 on arm64 and 'unsigned long' or arm and other platforms. printf referencing these are using %lx. On arm64, long and long long (and u64) are 64 bits. Rather than changing printf format, chnage arm64 macros to cast to unsigned long. --- kernel/cobalt/arch/arm64/include/asm/xenomai/syscall.h |2 +- kernel/cobalt/arch/arm64/include/asm/xenomai/thread.h |2 +- kernel/cobalt/posix/syscall.c |2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/kernel/cobalt/arch/arm64/include/asm/xenomai/syscall.h b/kernel/cobalt/arch/arm64/include/asm/xenomai/syscall.h index 7bf95fb..77c1716 100644 --- a/kernel/cobalt/arch/arm64/include/asm/xenomai/syscall.h +++ b/kernel/cobalt/arch/arm64/include/asm/xenomai/syscall.h @@ -45,7 +45,7 @@ #else /* !CONFIG_OABI_COMPAT */ #define __xn_syscall_p(__regs) ((__regs)->regs[8] == __ARM_NR_ipipe) #endif /* !CONFIG_OABI_COMPAT */ -#define __xn_syscall(__regs) (__xn_reg_sys(__regs) & ~__COBALT_SYSCALL_BIT) +#define __xn_syscall(__regs) ((unsigned long)(__xn_reg_sys(__regs) & ~__COBALT_SYSCALL_BIT)) #define __xn_reg_rval(__regs) ((__regs)->regs[0]) #define __xn_reg_arg1(__regs) ((__regs)->regs[1]) diff --git a/kernel/cobalt/arch/arm64/include/asm/xenomai/thread.h b/kernel/cobalt/arch/arm64/include/asm/xenomai/thread.h index 958f340..a8d7ed4 100644 --- a/kernel/cobalt/arch/arm64/include/asm/xenomai/thread.h +++ b/kernel/cobalt/arch/arm64/include/asm/xenomai/thread.h @@ -52,7 +52,7 @@ struct xnarchtcb { #define xnarch_fault_regs(d) ((d)->regs) #define xnarch_fault_trap(d) ((d)->exception) #define xnarch_fault_code(d) (0) -#define xnarch_fault_pc(d) ((d)->regs->pc - 4) /* XXX ? */ +#define xnarch_fault_pc(d) ((unsigned long)((d)->regs->pc - 4)) /* XXX ? */ #define xnarch_fault_pf_p(d) ((d)->exception == IPIPE_TRAP_ACCESS) #define xnarch_fault_bp_p(d) ((current->ptrace & PT_PTRACED) && \ diff --git a/kernel/cobalt/posix/syscall.c b/kernel/cobalt/posix/syscall.c index 79c847f..a128dea 100644 --- a/kernel/cobalt/posix/syscall.c +++ b/kernel/cobalt/posix/syscall.c @@ -814,7 +814,7 @@ linux_syscall: return KEVENT_PROPAGATE; bad_syscall: - printk(XENO_WARNING "bad syscall <%#llx>\n", __xn_syscall(regs)); + printk(XENO_WARNING "bad syscall <%#lx>\n", __xn_syscall(regs)); __xn_error_return(regs, -ENOSYS); ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Philippe Gerum : drivers/can/raw: use safer way of detecting xmit abort
Module: xenomai-3 Branch: next Commit: 4fe9e77d5499bcf940fa78d603ac8a16c448b31f URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=4fe9e77d5499bcf940fa78d603ac8a16c448b31f Author: Philippe GerumDate: Wed Sep 9 16:17:15 2015 +0200 drivers/can/raw: use safer way of detecting xmit abort --- kernel/drivers/can/rtcan_internal.h |5 - kernel/drivers/can/rtcan_raw.c | 10 +- kernel/drivers/can/rtcan_socket.c |3 +-- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/kernel/drivers/can/rtcan_internal.h b/kernel/drivers/can/rtcan_internal.h index b731e71..b290005 100644 --- a/kernel/drivers/can/rtcan_internal.h +++ b/kernel/drivers/can/rtcan_internal.h @@ -29,11 +29,6 @@ #include #include -#ifndef LIST_POISON1 -/* 2.4 - 2.6 compatibility stuff */ -#define LIST_POISON1 ((void *) 0x0) -#endif - #ifdef CONFIG_XENO_DRIVERS_CAN_DEBUG #define RTCAN_ASSERT(expr, func) \ if (!(expr)) { \ diff --git a/kernel/drivers/can/rtcan_raw.c b/kernel/drivers/can/rtcan_raw.c index 9eb8531..2047529 100644 --- a/kernel/drivers/can/rtcan_raw.c +++ b/kernel/drivers/can/rtcan_raw.c @@ -888,9 +888,9 @@ ssize_t rtcan_raw_sendmsg(struct rtdm_fd *fd, tx_wait.rt_task = rtdm_task_current(); -/* If socket was not closed recently, register the task at the - * socket's TX wait queue and decrement the TX semaphore. This must be - * atomic. Finally, the task must be deregistered again (also atomic). */ +/* Register the task at the socket's TX wait queue and decrement + * the TX semaphore. This must be atomic. Finally, the task must + * be deregistered again (also atomic). */ cobalt_atomic_enter(s); list_add(_wait.tx_wait_list, >tx_wait_head); @@ -900,9 +900,9 @@ ssize_t rtcan_raw_sendmsg(struct rtdm_fd *fd, /* Only dequeue task again if socket isn't being closed i.e. if * this task was not unblocked within the close() function. */ -if (likely(tx_wait.tx_wait_list.next != LIST_POISON1)) +if (likely(!list_empty(_wait.tx_wait_list))) /* Dequeue this task from the TX wait queue */ - list_del(_wait.tx_wait_list); + list_del_init(_wait.tx_wait_list); else /* The socket was closed. */ ret = -EBADF; diff --git a/kernel/drivers/can/rtcan_socket.c b/kernel/drivers/can/rtcan_socket.c index 6e6e79e..3c73fba 100644 --- a/kernel/drivers/can/rtcan_socket.c +++ b/kernel/drivers/can/rtcan_socket.c @@ -71,7 +71,6 @@ void rtcan_socket_cleanup(struct rtdm_fd *fd) rtdm_lockctx_t lock_ctx; int tx_list_empty; - /* Wake up sleeping senders. This is re-entrant-safe. */ do { cobalt_atomic_enter(lock_ctx); @@ -86,7 +85,7 @@ void rtcan_socket_cleanup(struct rtdm_fd *fd) struct tx_wait_queue, tx_wait_list); /* Remove it from list */ - list_del(_waiting->tx_wait_list); + list_del_init(_waiting->tx_wait_list); /* Wake task up (atomic section is left implicitly) */ rtdm_task_unblock(tx_waiting->rt_task); ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://xenomai.org/mailman/listinfo/xenomai-git