From: Wolfgang Grandegger <wg@domain.hid>
To: Jan Kiszka <jan.kiszka@domain.hid>
Cc: xenomai-core <xenomai@xenomai.org>
Subject: [Xenomai-core] More RTCAN patches
Date: Sun, 18 Feb 2007 21:04:44 +0100 [thread overview]
Message-ID: <45D8B15C.5050707@domain.hid> (raw)
[-- Attachment #1: Type: text/plain, Size: 1418 bytes --]
Hi Jan,
I have two more patches in my quilt stack:
2007-02-18 Wolfgang Grandegger <wg@domain.hid>
* ksrc/drivers/can/rtcan_raw.c, ksrc/drivers/can/rtcan_socket.h: add
prefix RTCAN_ to TIMESTAMP_SIZE, HAS_TIMESTAMP and HAS_NO_TIMESTAMP
to avoid name clashes, e.g. TIMESTAMP_SIZE is used by the kernel
starting with 2.6.20.
* include/rtdm/rtcan.h: add "__attribute__ ((aligned(8)))" to the
data[8] element of the struct can_frame.
2007-02-18 Wolfgang Grandegger <wg@domain.hid>
* include/rtdm/rtcan.h
ksrc/drivers/can/Config.in,
ksrc/drivers/can/Kconfig,
ksrc/drivers/can/rtcan_dev.h,
ksrc/drivers/can/rtcan_module.c,
ksrc/drivers/can/rtcan_raw.c,
ksrc/drivers/can/rtcan_raw.h,
ksrc/drivers/can/rtcan_socket.c,
ksrc/drivers/can/rtcan_socket.h,
ksrc/drivers/can/rtcan_socket.h,
ksrc/drivers/can/rtcan_virt.c,
ksrc/drivers/can/sja1000/rtcan_sja1000.c,
ksrc/drivers/can/mscan/rtcan_mscan.c,
src/utils/can/rtcansend.c: The socket option CAN_RAW_TX_LOOPBACK
has been renamed to CAN_RAW_LOOPBACK to be compatible with the
Socket-CAN implementation. Furthermore, all lower and upper case
strings "tx_loopback" have been replaced with "loopback" (to
shorten names).
The first one also fixes the alignment issue discussed on the Socket-CAN
mailing list.
Any comments or objections?
Wolfgang.
[-- Attachment #2: xenomai-rtcan-misc.patch --]
[-- Type: text/x-patch, Size: 6778 bytes --]
Index: quilt/xenomai/ksrc/drivers/can/rtcan_raw.c
===================================================================
--- quilt.orig/xenomai/ksrc/drivers/can/rtcan_raw.c
+++ quilt/xenomai/ksrc/drivers/can/rtcan_raw.c
@@ -86,10 +86,10 @@ static void rtcan_rcv_deliver(struct rtc
cpy_size = skb->rb_frame_size;
/* Check if socket wants to receive a timestamp */
if (test_bit(RTCAN_GET_TIMESTAMP, &context->context_flags)) {
- cpy_size += TIMESTAMP_SIZE;
- frame->can_dlc |= HAS_TIMESTAMP;
+ cpy_size += RTCAN_TIMESTAMP_SIZE;
+ frame->can_dlc |= RTCAN_HAS_TIMESTAMP;
} else
- frame->can_dlc &= HAS_NO_TIMESTAMP;
+ frame->can_dlc &= RTCAN_HAS_NO_TIMESTAMP;
/* Calculate free size in the ring buffer */
size_free = sock->recv_head - sock->recv_tail;
@@ -140,7 +140,7 @@ void rtcan_rcv(struct rtcan_device *dev,
/* Copy timestamp to skb */
memcpy((void *)&skb->rb_frame + skb->rb_frame_size,
- ×tamp, TIMESTAMP_SIZE);
+ ×tamp, RTCAN_TIMESTAMP_SIZE);
if ((frame->can_id & CAN_ERR_FLAG)) {
dev->err_count++;
@@ -192,7 +192,7 @@ void rtcan_loopback(struct rtcan_device
struct rtcan_rb_frame *frame = &dev->tx_skb.rb_frame;
memcpy((void *)&dev->tx_skb.rb_frame + dev->tx_skb.rb_frame_size,
- ×tamp, TIMESTAMP_SIZE);
+ ×tamp, RTCAN_TIMESTAMP_SIZE);
while (recv_listener != NULL) {
dev->rx_count++;
@@ -675,7 +675,7 @@ ssize_t rtcan_raw_recvmsg(struct rtdm_de
can_dlc = recv_buf[recv_buf_index];
recv_buf_index = (recv_buf_index + 1) & (RTCAN_RXBUF_SIZE - 1);
- frame.can_dlc = can_dlc & HAS_NO_TIMESTAMP;
+ frame.can_dlc = can_dlc & RTCAN_HAS_NO_TIMESTAMP;
payload_size = (frame.can_dlc > 8) ? 8 : frame.can_dlc;
@@ -688,9 +688,9 @@ ssize_t rtcan_raw_recvmsg(struct rtdm_de
/* Is a timestamp available and is the caller actually interested? */
- if (msg->msg_controllen && (can_dlc & HAS_TIMESTAMP)) {
+ if (msg->msg_controllen && (can_dlc & RTCAN_HAS_TIMESTAMP)) {
/* Copy timestamp */
- MEMCPY_FROM_RING_BUF(×tamp, TIMESTAMP_SIZE);
+ MEMCPY_FROM_RING_BUF(×tamp, RTCAN_TIMESTAMP_SIZE);
}
@@ -744,12 +744,12 @@ ssize_t rtcan_raw_recvmsg(struct rtdm_de
/* Copy timestamp if existent and wanted */
if (msg->msg_controllen) {
- if (can_dlc & HAS_TIMESTAMP) {
+ if (can_dlc & RTCAN_HAS_TIMESTAMP) {
if (rtdm_copy_to_user(user_info, msg->msg_control,
- ×tamp, TIMESTAMP_SIZE))
+ ×tamp, RTCAN_TIMESTAMP_SIZE))
return -EFAULT;
- msg->msg_controllen = TIMESTAMP_SIZE;
+ msg->msg_controllen = RTCAN_TIMESTAMP_SIZE;
} else
msg->msg_controllen = 0;
}
@@ -771,9 +771,9 @@ ssize_t rtcan_raw_recvmsg(struct rtdm_de
/* Copy timestamp if existent and wanted */
if (msg->msg_controllen) {
- if (can_dlc & HAS_TIMESTAMP) {
- memcpy(msg->msg_control, ×tamp, TIMESTAMP_SIZE);
- msg->msg_controllen = TIMESTAMP_SIZE;
+ if (can_dlc & RTCAN_HAS_TIMESTAMP) {
+ memcpy(msg->msg_control, ×tamp, RTCAN_TIMESTAMP_SIZE);
+ msg->msg_controllen = RTCAN_TIMESTAMP_SIZE;
} else
msg->msg_controllen = 0;
}
Index: quilt/xenomai/ksrc/drivers/can/rtcan_socket.h
===================================================================
--- quilt.orig/xenomai/ksrc/drivers/can/rtcan_socket.h
+++ quilt/xenomai/ksrc/drivers/can/rtcan_socket.h
@@ -38,18 +38,17 @@
/* This MUST BE 2^N */
-#define RTCAN_RXBUF_SIZE CONFIG_XENO_DRIVERS_CAN_RXBUF_SIZE
+#define RTCAN_RXBUF_SIZE CONFIG_XENO_DRIVERS_CAN_RXBUF_SIZE
/* Size of timestamp */
-#define TIMESTAMP_SIZE sizeof(nanosecs_abs_t)
-
+#define RTCAN_TIMESTAMP_SIZE sizeof(nanosecs_abs_t)
/* Bit in the can_dlc member of struct ring_buffer_frame used to indicate
* whether a frame has got a timestamp or not */
-#define HAS_TIMESTAMP 0x80
+#define RTCAN_HAS_TIMESTAMP 0x80
-/* Mask for clearing bit HAS_TIMESTAMP */
-#define HAS_NO_TIMESTAMP 0x7F
+/* Mask for clearing bit RTCAN_HAS_TIMESTAMP */
+#define RTCAN_HAS_NO_TIMESTAMP 0x7F
#define RTCAN_SOCK_UNBOUND -1
#define RTCAN_FLIST_NO_FILTER (void *)-1
@@ -75,7 +74,7 @@ struct rtcan_rb_frame {
unsigned char can_ifindex;
/* DLC (between 0 and 15) and mark if frame has got a timestamp. The
- * existence of a timestamp is indicated by the HAS_TIMESTAMP
+ * existence of a timestamp is indicated by the RTCAN_HAS_TIMESTAMP
* bit. */
unsigned char can_dlc;
@@ -83,7 +82,7 @@ struct rtcan_rb_frame {
uint8_t data[8];
/* High precision timestamp indicating when the frame was received.
- * Exists when HAS_TIMESTAMP bit in can_dlc is set. */
+ * Exists when RTCAN_HAS_TIMESTAMP bit in can_dlc is set. */
nanosecs_abs_t timestamp;
} __attribute__ ((packed));
@@ -91,7 +90,7 @@ struct rtcan_rb_frame {
/* Size of struct rtcan_rb_frame without any data bytes and timestamp */
#define EMPTY_RB_FRAME_SIZE \
- sizeof(struct rtcan_rb_frame) - 8 - TIMESTAMP_SIZE
+ sizeof(struct rtcan_rb_frame) - 8 - RTCAN_TIMESTAMP_SIZE
/*
Index: quilt/xenomai/ChangeLog
===================================================================
--- quilt.orig/xenomai/ChangeLog
+++ quilt/xenomai/ChangeLog
@@ -1,5 +1,15 @@
2007-02-18 Wolfgang Grandegger <wg@domain.hid>
+ * ksrc/drivers/can/rtcan_raw.c, ksrc/drivers/can/rtcan_socket.h: add
+ prefix RTCAN_ to TIMESTAMP_SIZE, HAS_TIMESTAMP and HAS_NO_TIMESTAMP
+ to avoid name clashes, e.g. TIMESTAMP_SIZE is used by the kernel
+ starting with 2.6.20.
+
+ * include/rtdm/rtcan.h: add "__attribute__ ((aligned(8)))" to the
+ data[8] element of the struct can_frame.
+
+2007-02-18 Wolfgang Grandegger <wg@domain.hid>
+
* include/rtdm/rtcan.h
ksrc/drivers/can/Config.in,
ksrc/drivers/can/Kconfig,
Index: quilt/xenomai/include/rtdm/rtcan.h
===================================================================
--- quilt.orig/xenomai/include/rtdm/rtcan.h
+++ quilt/xenomai/include/rtdm/rtcan.h
@@ -503,7 +503,7 @@ typedef struct can_frame {
/** CAN ID of the frame
*
- * See @ref CAN_xxx_FLAG "CAN ID flags" for special bits.
+ * See @ref CAN_xxx_FLAG "CAN ID flags" for special bits.
*/
can_id_t can_id;
@@ -511,7 +511,7 @@ typedef struct can_frame {
uint8_t can_dlc;
/** Payload data bytes */
- uint8_t data[8];
+ uint8_t data[8] __attribute__ ((aligned(8)));
} can_frame_t;
[-- Attachment #3: xenomai-rtcan-loopback.patch --]
[-- Type: text/x-patch, Size: 13498 bytes --]
Index: quilt/xenomai/include/rtdm/rtcan.h
===================================================================
--- quilt.orig/xenomai/include/rtdm/rtcan.h
+++ quilt/xenomai/include/rtdm/rtcan.h
@@ -123,7 +123,7 @@
* - Level @b SOL_CAN_RAW : CAN RAW protocol (see @ref CAN_PROTO_RAW)
* - Option @ref CAN_RAW_FILTER : CAN filter list
* - Option @ref CAN_RAW_ERR_FILTER : CAN error mask
- * - Option @ref CAN_RAW_TX_LOOPBACK : CAN TX loopback to local sockets
+ * - Option @ref CAN_RAW_LOOPBACK : CAN TX loopback to local sockets
* .
* .
* @n
@@ -612,7 +612,7 @@ typedef struct can_frame {
* @n
* @param [in] level @b SOL_CAN_RAW
*
- * @param [in] optname @b CAN_RAW_TX_LOOPBACK
+ * @param [in] optname @b CAN_RAW_LOOPBACK
*
* @param [in] optval Pointer to integer value.
*
@@ -626,7 +626,7 @@ typedef struct can_frame {
* - -EINVAL (Invalid length "optlen")
* - -EOPNOTSUPP (not supported, check RT-Socket-CAN kernel parameters).
*/
-#define CAN_RAW_TX_LOOPBACK 0x3
+#define CAN_RAW_LOOPBACK 0x3
/** @} */
Index: quilt/xenomai/ksrc/drivers/can/Config.in
===================================================================
--- quilt.orig/xenomai/ksrc/drivers/can/Config.in
+++ quilt/xenomai/ksrc/drivers/can/Config.in
@@ -9,7 +9,7 @@ dep_tristate 'RT-Socket-CAN, CAN raw soc
if [ "$CONFIG_XENO_DRIVERS_CAN" != "n" ]; then
bool 'Enable debug output' CONFIG_XENO_DRIVERS_CAN_DEBUG
- bool 'Enable TX loopback to local sockets' CONFIG_XENO_DRIVERS_CAN_TX_LOOPBACK
+ bool 'Enable TX loopback to local sockets' CONFIG_XENO_DRIVERS_CAN_LOOPBACK
int 'Size of receive ring buffers (must be 2^N)' CONFIG_XENO_DRIVERS_CAN_RXBUF_SIZE 1024
int 'Maximum number of devices' CONFIG_XENO_DRIVERS_CAN_MAX_DEVICES 4
int 'Maximum number of receive filters per device' CONFIG_XENO_DRIVERS_CAN_MAX_RECEIVERS 16
Index: quilt/xenomai/ksrc/drivers/can/Kconfig
===================================================================
--- quilt.orig/xenomai/ksrc/drivers/can/Kconfig
+++ quilt/xenomai/ksrc/drivers/can/Kconfig
@@ -18,7 +18,7 @@ config XENO_DRIVERS_CAN_DEBUG
getting started and analysing potential problems. For production
purposes, it should be switched off (for the sake of latency).
-config XENO_DRIVERS_CAN_TX_LOOPBACK
+config XENO_DRIVERS_CAN_LOOPBACK
depends on XENO_DRIVERS_CAN
bool "Enable TX loopback to local sockets"
default n
Index: quilt/xenomai/ksrc/drivers/can/mscan/rtcan_mscan.c
===================================================================
--- quilt.orig/xenomai/ksrc/drivers/can/mscan/rtcan_mscan.c
+++ quilt/xenomai/ksrc/drivers/can/mscan/rtcan_mscan.c
@@ -251,7 +251,7 @@ static int rtcan_mscan_interrupt(rtdm_ir
/* Wake up a sender */
rtdm_sem_up(&dev->tx_sem);
- if (rtcan_tx_loopback_pending(dev)) {
+ if (rtcan_loopback_pending(dev)) {
if (recv_lock_free) {
recv_lock_free = 0;
@@ -259,7 +259,7 @@ static int rtcan_mscan_interrupt(rtdm_ir
rtdm_lock_get(&rtcan_socket_lock);
}
- rtcan_tx_loopback(dev);
+ rtcan_loopback(dev);
}
}
Index: quilt/xenomai/ksrc/drivers/can/rtcan_dev.h
===================================================================
--- quilt.orig/xenomai/ksrc/drivers/can/rtcan_dev.h
+++ quilt/xenomai/ksrc/drivers/can/rtcan_dev.h
@@ -142,10 +142,10 @@ struct rtcan_device {
#ifdef CONFIG_PROC_FS
struct proc_dir_entry *proc_root;
#endif
-#ifdef CONFIG_XENO_DRIVERS_CAN_TX_LOOPBACK
+#ifdef CONFIG_XENO_DRIVERS_CAN_LOOPBACK
struct rtcan_skb tx_skb;
struct rtcan_socket *tx_socket;
-#endif /* CONFIG_XENO_DRIVERS_CAN_TX_LOOPBACK */
+#endif /* CONFIG_XENO_DRIVERS_CAN_LOOPBACK */
};
Index: quilt/xenomai/ksrc/drivers/can/rtcan_module.c
===================================================================
--- quilt.orig/xenomai/ksrc/drivers/can/rtcan_module.c
+++ quilt/xenomai/ksrc/drivers/can/rtcan_module.c
@@ -200,7 +200,7 @@ static int rtcan_read_proc_sockets(char
context->fd, name, sock->flistlen,
sock->err_mask, rx_timeout, tx_timeout,
sock->rx_buf_full,
- rtcan_tx_loopback_enabled(sock)))
+ rtcan_loopback_enabled(sock)))
break;
}
Index: quilt/xenomai/ksrc/drivers/can/rtcan_raw.c
===================================================================
--- quilt.orig/xenomai/ksrc/drivers/can/rtcan_raw.c
+++ quilt/xenomai/ksrc/drivers/can/rtcan_raw.c
@@ -163,7 +163,7 @@ void rtcan_rcv(struct rtcan_device *dev,
}
}
-#ifdef CONFIG_XENO_DRIVERS_CAN_TX_LOOPBACK
+#ifdef CONFIG_XENO_DRIVERS_CAN_LOOPBACK
void rtcan_tx_push(struct rtcan_device *dev, struct rtcan_socket *sock,
can_frame_t *frame)
@@ -184,7 +184,7 @@ void rtcan_tx_push(struct rtcan_device *
dev->tx_socket = sock;
}
-void rtcan_tx_loopback(struct rtcan_device *dev)
+void rtcan_loopback(struct rtcan_device *dev)
{
nanosecs_abs_t timestamp = rtdm_clock_read();
/* Entry in reception list, begin with head */
@@ -206,9 +206,9 @@ void rtcan_tx_loopback(struct rtcan_devi
dev->tx_socket = NULL;
}
-EXPORT_SYMBOL_GPL(rtcan_tx_loopback);
+EXPORT_SYMBOL_GPL(rtcan_loopback);
-#endif /* CONFIG_XENO_DRIVERS_CAN_TX_LOOPBACK */
+#endif /* CONFIG_XENO_DRIVERS_CAN_LOOPBACK */
int rtcan_raw_socket(struct rtdm_dev_context *context,
@@ -386,7 +386,7 @@ static int rtcan_raw_setsockopt(struct r
break;
- case CAN_RAW_TX_LOOPBACK:
+ case CAN_RAW_LOOPBACK:
if (so->optlen != sizeof(int))
return -EINVAL;
@@ -398,8 +398,8 @@ static int rtcan_raw_setsockopt(struct r
} else
memcpy(&val, so->optval, so->optlen);
-#ifdef CONFIG_XENO_DRIVERS_CAN_TX_LOOPBACK
- sock->tx_loopback = val;
+#ifdef CONFIG_XENO_DRIVERS_CAN_LOOPBACK
+ sock->loopback = val;
#else
if (val)
return -EOPNOTSUPP;
@@ -960,7 +960,7 @@ ssize_t rtcan_raw_sendmsg(struct rtdm_de
/* Push message onto stack for loopback when TX done */
- if (rtcan_tx_loopback_enabled(sock))
+ if (rtcan_loopback_enabled(sock))
rtcan_tx_push(dev, sock, frame);
rtdm_lock_get_irqsave(&dev->device_lock, lock_ctx);
Index: quilt/xenomai/ksrc/drivers/can/rtcan_raw.h
===================================================================
--- quilt.orig/xenomai/ksrc/drivers/can/rtcan_raw.h
+++ quilt/xenomai/ksrc/drivers/can/rtcan_raw.h
@@ -32,14 +32,14 @@ void rtcan_raw_remove_filter(struct rtca
void rtcan_rcv(struct rtcan_device *rtcandev, struct rtcan_skb *skb);
-void rtcan_tx_loopback(struct rtcan_device *rtcandev);
-#ifdef CONFIG_XENO_DRIVERS_CAN_TX_LOOPBACK
-#define rtcan_tx_loopback_enabled(sock) (sock->tx_loopback)
-#define rtcan_tx_loopback_pending(dev) (dev->tx_socket)
-#else /* !CONFIG_XENO_DRIVERS_CAN_TX_LOOPBACK */
-#define rtcan_tx_loopback_enabled(sock) (0)
-#define rtcan_tx_loopback_pending(dev) (0)
-#endif /* CONFIG_XENO_DRIVERS_CAN_TX_LOOPBACK */
+void rtcan_loopback(struct rtcan_device *rtcandev);
+#ifdef CONFIG_XENO_DRIVERS_CAN_LOOPBACK
+#define rtcan_loopback_enabled(sock) (sock->loopback)
+#define rtcan_loopback_pending(dev) (dev->tx_socket)
+#else /* !CONFIG_XENO_DRIVERS_CAN_LOOPBACK */
+#define rtcan_loopback_enabled(sock) (0)
+#define rtcan_loopback_pending(dev) (0)
+#endif /* CONFIG_XENO_DRIVERS_CAN_LOOPBACK */
int __init rtcan_raw_proto_register(void);
void __exit rtcan_raw_proto_unregister(void);
Index: quilt/xenomai/ksrc/drivers/can/rtcan_socket.c
===================================================================
--- quilt.orig/xenomai/ksrc/drivers/can/rtcan_socket.c
+++ quilt/xenomai/ksrc/drivers/can/rtcan_socket.c
@@ -48,8 +48,8 @@ void rtcan_socket_init(struct rtdm_dev_c
sock->flist = NULL;
sock->err_mask = 0;
sock->rx_buf_full = 0;
-#ifdef CONFIG_XENO_DRIVERS_CAN_TX_LOOPBACK
- sock->tx_loopback = 1;
+#ifdef CONFIG_XENO_DRIVERS_CAN_LOOPBACK
+ sock->loopback = 1;
#endif
sock->tx_timeout = RTDM_TIMEOUT_INFINITE;
Index: quilt/xenomai/ksrc/drivers/can/rtcan_socket.h
===================================================================
--- quilt.orig/xenomai/ksrc/drivers/can/rtcan_socket.h
+++ quilt/xenomai/ksrc/drivers/can/rtcan_socket.h
@@ -173,8 +173,8 @@ struct rtcan_socket {
struct rtcan_filter_list *flist;
-#ifdef CONFIG_XENO_DRIVERS_CAN_TX_LOOPBACK
- int tx_loopback;
+#ifdef CONFIG_XENO_DRIVERS_CAN_LOOPBACK
+ int loopback;
#endif
};
Index: quilt/xenomai/ksrc/drivers/can/rtcan_virt.c
===================================================================
--- quilt.orig/xenomai/ksrc/drivers/can/rtcan_virt.c
+++ quilt/xenomai/ksrc/drivers/can/rtcan_virt.c
@@ -78,8 +78,8 @@ static int rtcan_virt_start_xmit(struct
if (tx_dev != rx_dev) {
rx_frame->can_ifindex = rx_dev->ifindex;
rtcan_rcv(rx_dev, &skb);
- } else if (rtcan_tx_loopback_pending(tx_dev))
- rtcan_tx_loopback(tx_dev);
+ } else if (rtcan_loopback_pending(tx_dev))
+ rtcan_loopback(tx_dev);
}
}
rtdm_lock_put(&rtcan_socket_lock);
Index: quilt/xenomai/ksrc/drivers/can/sja1000/rtcan_sja1000.c
===================================================================
--- quilt.orig/xenomai/ksrc/drivers/can/sja1000/rtcan_sja1000.c
+++ quilt/xenomai/ksrc/drivers/can/sja1000/rtcan_sja1000.c
@@ -312,7 +312,7 @@ static int rtcan_sja_interrupt(rtdm_irq_
/* Wake up a sender */
rtdm_sem_up(&dev->tx_sem);
- if (rtcan_tx_loopback_pending(dev)) {
+ if (rtcan_loopback_pending(dev)) {
if (recv_lock_free) {
recv_lock_free = 0;
@@ -320,7 +320,7 @@ static int rtcan_sja_interrupt(rtdm_irq_
rtdm_lock_get(&rtcan_socket_lock);
}
- rtcan_tx_loopback(dev);
+ rtcan_loopback(dev);
}
}
Index: quilt/xenomai/src/utils/can/rtcansend.c
===================================================================
--- quilt.orig/xenomai/src/utils/can/rtcansend.c
+++ quilt/xenomai/src/utils/can/rtcansend.c
@@ -28,7 +28,7 @@ static void print_usage(char *prg)
" -d, --delay=MS delay in ms (default = 1ms)\n"
" -s, --send use send instead of sendto\n"
" -t, --timeout=MS timeout in ms\n"
- " -T, --tx-loopback=0|1 switch TX loopback off or on\n"
+ " -L, --loopback=0|1 switch local loopback off or on\n"
" -v, --verbose be verbose\n"
" -p, --print=MODULO print every MODULO message\n"
" -h, --help this help\n",
@@ -40,7 +40,7 @@ RT_TASK rt_task_desc;
static int s=-1, dlc=0, rtr=0, extended=0, verbose=0, loops=1;
static SRTIME delay=1000000;
-static int count=0, print=1, use_send=0, tx_loopback=-1;
+static int count=0, print=1, use_send=0, loopback=-1;
static nanosecs_rel_t timeout = 0;
static struct can_frame frame;
static struct sockaddr_can to_addr;
@@ -81,7 +81,7 @@ void rt_task(void)
rt_task_sleep(rt_timer_ns2ticks(delay));
if (count)
memcpy(&frame.data[0], &i, sizeof(i));
- /* Note: sendto avoids the definiton of a receive filter list */
+ /* Note: sendto avoids the definiton of a receive filter list */
if (use_send)
ret = rt_dev_send(s, (void *)&frame, sizeof(can_frame_t), 0);
else
@@ -136,7 +136,7 @@ int main(int argc, char **argv)
{ "delay", required_argument, 0, 'd'},
{ "send", no_argument, 0, 's'},
{ "timeout", required_argument, 0, 't'},
- { "tx-loopbcak", required_argument, 0, 'T'},
+ { "loopback", required_argument, 0, 'L'},
{ 0, 0, 0, 0},
};
@@ -147,7 +147,7 @@ int main(int argc, char **argv)
frame.can_id = 1;
- while ((opt = getopt_long(argc, argv, "hvi:l:red:t:cp:sT:",
+ while ((opt = getopt_long(argc, argv, "hvi:l:red:t:cp:sL:",
long_options, NULL)) != -1) {
switch (opt) {
case 'h':
@@ -193,8 +193,8 @@ int main(int argc, char **argv)
timeout = strtoul(optarg, NULL, 0) * 1000000LL;
break;
- case 'T':
- tx_loopback = strtoul(optarg, NULL, 0);
+ case 'L':
+ loopback = strtoul(optarg, NULL, 0);
break;
default:
@@ -223,15 +223,15 @@ int main(int argc, char **argv)
}
s = ret;
- if (tx_loopback >= 0) {
- ret = rt_dev_setsockopt(s, SOL_CAN_RAW, CAN_RAW_TX_LOOPBACK,
- &tx_loopback, sizeof(tx_loopback));
+ if (loopback >= 0) {
+ ret = rt_dev_setsockopt(s, SOL_CAN_RAW, CAN_RAW_LOOPBACK,
+ &loopback, sizeof(loopback));
if (ret < 0) {
fprintf(stderr, "rt_dev_setsockopt: %s\n", strerror(-ret));
goto failure;
}
if (verbose)
- printf("Using tx_loopback=%d\n", tx_loopback);
+ printf("Using loopback=%d\n", loopback);
}
strncpy(ifr.ifr_name, argv[optind], IFNAMSIZ);
Index: quilt/xenomai/ChangeLog
===================================================================
--- quilt.orig/xenomai/ChangeLog
+++ quilt/xenomai/ChangeLog
@@ -1,3 +1,22 @@
+2007-02-18 Wolfgang Grandegger <wg@domain.hid>
+
+ * include/rtdm/rtcan.h
+ ksrc/drivers/can/Config.in,
+ ksrc/drivers/can/Kconfig,
+ ksrc/drivers/can/rtcan_dev.h,
+ ksrc/drivers/can/rtcan_module.c,
+ ksrc/drivers/can/rtcan_raw.c,
+ ksrc/drivers/can/rtcan_raw.h,
+ ksrc/drivers/can/rtcan_socket.c,
+ ksrc/drivers/can/rtcan_socket.h,
+ ksrc/drivers/can/rtcan_virt.c,
+ ksrc/drivers/can/sja1000/rtcan_sja1000.c,
+ ksrc/drivers/can/mscan/rtcan_mscan.c,
+ src/utils/can/rtcansend.c: The socket option CAN_RAW_TX_LOOPBACK has
+ been renamed to CAN_RAW_LOOPBACK to be compatible with the Socket-CAN
+ implementation. Furthermore, all lower and upper case strings
+ "tx_loopback" have been replaced with "loopback" (to shorten names).
+
2007-02-17 Wolfgang Grandegger <wg@domain.hid>
* ksrc/drivers/can/rtcan_raw.c, ksrc/drivers/can/rtcan_raw_filter.c,
next reply other threads:[~2007-02-18 20:04 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-02-18 20:04 Wolfgang Grandegger [this message]
2007-02-18 20:33 ` [Xenomai-core] Re: More RTCAN patches Jan Kiszka
2007-02-18 20:47 ` Wolfgang Grandegger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=45D8B15C.5050707@domain.hid \
--to=wg@domain.hid \
--cc=jan.kiszka@domain.hid \
--cc=xenomai@xenomai.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.