All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai-core] Time representation in RTDM profiles
@ 2006-08-16  8:49 Jan Kiszka
  2006-08-16 10:31 ` [Xenomai-core] " Sebastian Smolorz
  0 siblings, 1 reply; 7+ messages in thread
From: Jan Kiszka @ 2006-08-16  8:49 UTC (permalink / raw)
  To: xenomai-core

[-- Attachment #1: Type: text/plain, Size: 442 bytes --]

Hi all,

the current representation of timeouts and timestamps in RTDM device
profiles is inconsistent. In the serial profile we use [u]int64_t
directly, the CAN profile defines its own types called
nanosecs_{abs|rel}_t (though they just wrap the int64 ones).

What is the idea of nanosecs? Having a way to redefine that type looks
nice, but it's unfortunately the ABI, so we cannot easily change it
without breaking apps.

Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 250 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Xenomai-core] Re: Time representation in RTDM profiles
  2006-08-16  8:49 [Xenomai-core] Time representation in RTDM profiles Jan Kiszka
@ 2006-08-16 10:31 ` Sebastian Smolorz
  2006-08-16 10:52   ` Jan Kiszka
  0 siblings, 1 reply; 7+ messages in thread
From: Sebastian Smolorz @ 2006-08-16 10:31 UTC (permalink / raw)
  To: Jan Kiszka; +Cc: xenomai-core

Jan Kiszka wrote:
> the current representation of timeouts and timestamps in RTDM device
> profiles is inconsistent.

I would welcome a consistent time value representation above all RTDM 
profiles, too.

> In the serial profile we use [u]int64_t 
> directly, the CAN profile defines its own types called
> nanosecs_{abs|rel}_t (though they just wrap the int64 ones).
>
> What is the idea of nanosecs? Having a way to redefine that type looks
> nice, but it's unfortunately the ABI, so we cannot easily change it
> without breaking apps.

The possibility of redefinition was not the main goal here. As you mentioned 
it would be problematic. No, I introduced nanosecs_abs_t and nanosecs_rel_t 
because they are more intuitive and more "speaking" to the programmer. The 
meaning of a variable of such a type is clear at first sight.

Sebastian


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Xenomai-core] Re: Time representation in RTDM profiles
  2006-08-16 10:31 ` [Xenomai-core] " Sebastian Smolorz
@ 2006-08-16 10:52   ` Jan Kiszka
  2006-08-16 11:05     ` Sebastian Smolorz
  0 siblings, 1 reply; 7+ messages in thread
From: Jan Kiszka @ 2006-08-16 10:52 UTC (permalink / raw)
  To: Sebastian Smolorz; +Cc: xenomai-core

[-- Attachment #1: Type: text/plain, Size: 1200 bytes --]

Sebastian Smolorz wrote:
> Jan Kiszka wrote:
>> the current representation of timeouts and timestamps in RTDM device
>> profiles is inconsistent.
> 
> I would welcome a consistent time value representation above all RTDM 
> profiles, too.
> 
>> In the serial profile we use [u]int64_t 
>> directly, the CAN profile defines its own types called
>> nanosecs_{abs|rel}_t (though they just wrap the int64 ones).
>>
>> What is the idea of nanosecs? Having a way to redefine that type looks
>> nice, but it's unfortunately the ABI, so we cannot easily change it
>> without breaking apps.
> 
> The possibility of redefinition was not the main goal here. As you mentioned 
> it would be problematic. No, I introduced nanosecs_abs_t and nanosecs_rel_t 
> because they are more intuitive and more "speaking" to the programmer. The 
> meaning of a variable of such a type is clear at first sight.
> 

Yeah, sounds reasonable to me. Then let's move these typedefs to rtdm.h
and document them as self-explanatory defines of the underlying standard
types, freezing their width and signedness at the same time.

Actually, this would be useful for the driver API of RTDM as well.

Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 250 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Xenomai-core] Re: Time representation in RTDM profiles
  2006-08-16 10:52   ` Jan Kiszka
@ 2006-08-16 11:05     ` Sebastian Smolorz
  2006-08-16 14:26       ` Jan Kiszka
  0 siblings, 1 reply; 7+ messages in thread
From: Sebastian Smolorz @ 2006-08-16 11:05 UTC (permalink / raw)
  To: Jan Kiszka; +Cc: xenomai-core

Jan Kiszka wrote:
> Sebastian Smolorz wrote:
> > The possibility of redefinition was not the main goal here. As you
> > mentioned it would be problematic. No, I introduced nanosecs_abs_t and
> > nanosecs_rel_t because they are more intuitive and more "speaking" to the
> > programmer. The meaning of a variable of such a type is clear at first
> > sight.
>
> Yeah, sounds reasonable to me. Then let's move these typedefs to rtdm.h
> and document them as self-explanatory defines of the underlying standard
> types, freezing their width and signedness at the same time.

Agreed.

>
> Actually, this would be useful for the driver API of RTDM as well.

That's right. No objections from my side.

Sebastian


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Xenomai-core] Re: Time representation in RTDM profiles
  2006-08-16 11:05     ` Sebastian Smolorz
@ 2006-08-16 14:26       ` Jan Kiszka
  2006-08-16 18:20         ` Sebastian Smolorz
  0 siblings, 1 reply; 7+ messages in thread
From: Jan Kiszka @ 2006-08-16 14:26 UTC (permalink / raw)
  To: Sebastian Smolorz; +Cc: xenomai-core

[-- Attachment #1: Type: text/plain, Size: 1025 bytes --]

Sebastian Smolorz wrote:
> Jan Kiszka wrote:
>> Sebastian Smolorz wrote:
>>> The possibility of redefinition was not the main goal here. As you
>>> mentioned it would be problematic. No, I introduced nanosecs_abs_t and
>>> nanosecs_rel_t because they are more intuitive and more "speaking" to the
>>> programmer. The meaning of a variable of such a type is clear at first
>>> sight.
>> Yeah, sounds reasonable to me. Then let's move these typedefs to rtdm.h
>> and document them as self-explanatory defines of the underlying standard
>> types, freezing their width and signedness at the same time.
> 
> Agreed.
> 
>> Actually, this would be useful for the driver API of RTDM as well.
> 
> That's right. No objections from my side.
> 

Done.

Though I checked things more then twice, some regression may be hidden,
specifically as I changed the signedness of timeout parameters of a few
RTDM driver API functions. All documented under
ksrc/skins/rtdm/API.CHANGES, and everyone is warned now.

Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 250 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Xenomai-core] Re: Time representation in RTDM profiles
  2006-08-16 14:26       ` Jan Kiszka
@ 2006-08-16 18:20         ` Sebastian Smolorz
  2006-08-16 19:06           ` Jan Kiszka
  0 siblings, 1 reply; 7+ messages in thread
From: Sebastian Smolorz @ 2006-08-16 18:20 UTC (permalink / raw)
  To: Jan Kiszka; +Cc: xenomai-core

[-- Attachment #1: Type: text/plain, Size: 1125 bytes --]

Jan Kiszka wrote:
> Sebastian Smolorz wrote:
> > Jan Kiszka wrote:
> >> Sebastian Smolorz wrote:
> >>> The possibility of redefinition was not the main goal here. As you
> >>> mentioned it would be problematic. No, I introduced nanosecs_abs_t and
> >>> nanosecs_rel_t because they are more intuitive and more "speaking" to
> >>> the programmer. The meaning of a variable of such a type is clear at
> >>> first sight.
> >>
> >> Yeah, sounds reasonable to me. Then let's move these typedefs to rtdm.h
> >> and document them as self-explanatory defines of the underlying standard
> >> types, freezing their width and signedness at the same time.
> >
> > Agreed.
> >
> >> Actually, this would be useful for the driver API of RTDM as well.
> >
> > That's right. No objections from my side.
>
> Done.
>
> Though I checked things more then twice, some regression may be hidden,
> specifically as I changed the signedness of timeout parameters of a few
> RTDM driver API functions. All documented under
> ksrc/skins/rtdm/API.CHANGES, and everyone is warned now.

Here comes a follow-up patch. Compile-tested successfully.

Sebastian

[-- Attachment #2: rtcan_timeout.patch --]
[-- Type: text/x-diff, Size: 3886 bytes --]

Index: include/rtdm/rtcan.h
===================================================================
--- include/rtdm/rtcan.h	(Revision 1450)
+++ include/rtdm/rtcan.h	(Arbeitskopie)
@@ -507,16 +507,6 @@
 /** @} */
 
 
-/*!
- * @anchor RTCAN_TIMEOUTS   @name Timeouts
- * Special reception and transmission timeouts
- * @{ */
-#define RTCAN_TIMEOUT_INFINITE    0     /**< wait for ever  */
-#define RTCAN_TIMEOUT_NONE        (-1)  /**< equivalent to non-blocking */
-/** @} */
-
-
-
 #define RTIOC_TYPE_CAN              RTDM_CLASS_CAN
 
 
@@ -946,7 +936,7 @@
  * @param [in] arg Pointer to @ref nanosecs_rel_t variable. The value is
  *                interpreted as relative timeout in nanoseconds in case
  *                of a positive value.
- *                See @ref RTCAN_TIMEOUTS "Timeouts" for special timeouts.
+ *                See @ref RTDM_TIMEOUT_xxx "Timeouts" for special timeouts.
  *
  * @return 0 on success, otherwise:
  * - -EFAULT: It was not possible to access user space memory area at the
@@ -976,7 +966,7 @@
  * @param [in] arg Pointer to @ref nanosecs_rel_t variable. The value is
  *                interpreted as relative timeout in nanoseconds in case
  *                of a positive value.
- *                See @ref RTCAN_TIMEOUTS "Timeouts" for special timeouts.
+ *                See @ref RTDM_TIMEOUT_xxx "Timeouts" for special timeouts.
  *
  * @return 0 on success, otherwise:
  * - -EFAULT: It was not possible to access user space memory area at the
Index: ChangeLog
===================================================================
--- ChangeLog	(Revision 1450)
+++ ChangeLog	(Arbeitskopie)
@@ -1,3 +1,8 @@
+2006-08-16  Sebastian Smolorz  <Sebastian.Smolorz@domain.hid>
+
+	* include/rtdm/rtcan.h, ksrc/drivers/can/rtcan_{module,socket,raw}.c:
+	Get rid of RTCAN_TIMEOUT_* defines and replace them with RTDM_TIMEOUT_*
+
 2006-08-16  Jan Kiszka  <jan.kiszka@domain.hid>
 
 	* include/rtdm/*.h, ksrc/skins/rtdm/drvlib.c: Refactor RTDM types
Index: ksrc/drivers/can/rtcan_module.c
===================================================================
--- ksrc/drivers/can/rtcan_module.c	(Revision 1450)
+++ ksrc/drivers/can/rtcan_module.c	(Arbeitskopie)
@@ -112,7 +112,7 @@
 static void rtcan_get_timeout_name(nanosecs_rel_t timeout,
 				   char* name, int max_len)
 {
-    if (timeout == RTCAN_TIMEOUT_INFINITE) 
+    if (timeout == RTDM_TIMEOUT_INFINITE) 
 	strncpy(name, "infinite", max_len);
     else
 	sprintf(name, "%lld", timeout);
Index: ksrc/drivers/can/rtcan_socket.c
===================================================================
--- ksrc/drivers/can/rtcan_socket.c	(Revision 1450)
+++ ksrc/drivers/can/rtcan_socket.c	(Arbeitskopie)
@@ -49,8 +49,8 @@
     sock->err_mask = 0;
     sock->rx_buf_full = 0;
 
-    sock->tx_timeout = RTCAN_TIMEOUT_INFINITE;
-    sock->rx_timeout = RTCAN_TIMEOUT_INFINITE;
+    sock->tx_timeout = RTDM_TIMEOUT_INFINITE;
+    sock->rx_timeout = RTDM_TIMEOUT_INFINITE;
 
     INIT_LIST_HEAD(&sock->tx_wait_head);
     list_add(&sock->socket_list, &rtcan_socket_list);
Index: ksrc/drivers/can/rtcan_raw.c
===================================================================
--- ksrc/drivers/can/rtcan_raw.c	(Revision 1450)
+++ ksrc/drivers/can/rtcan_raw.c	(Arbeitskopie)
@@ -556,7 +556,7 @@
     /* Set RX timeout */
     rtdm_lock_get_irqsave(&rtcan_socket_lock, lock_ctx);
 
-    timeout = (flags & MSG_DONTWAIT) ? RTCAN_TIMEOUT_NONE : sock->rx_timeout;
+    timeout = (flags & MSG_DONTWAIT) ? RTDM_TIMEOUT_NONE : sock->rx_timeout;
 
     rtdm_lock_put_irqrestore(&rtcan_socket_lock, lock_ctx);
 
@@ -839,7 +839,7 @@
    
     rtdm_lock_get_irqsave(&rtcan_socket_lock, lock_ctx);
 
-    timeout = (flags & MSG_DONTWAIT) ? RTCAN_TIMEOUT_NONE : sock->tx_timeout;
+    timeout = (flags & MSG_DONTWAIT) ? RTDM_TIMEOUT_NONE : sock->tx_timeout;
 
     rtdm_lock_put_irqrestore(&rtcan_socket_lock, lock_ctx);
 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Xenomai-core] Re: Time representation in RTDM profiles
  2006-08-16 18:20         ` Sebastian Smolorz
@ 2006-08-16 19:06           ` Jan Kiszka
  0 siblings, 0 replies; 7+ messages in thread
From: Jan Kiszka @ 2006-08-16 19:06 UTC (permalink / raw)
  To: Sebastian Smolorz; +Cc: xenomai-core

Sebastian Smolorz wrote:
> Jan Kiszka wrote:
>> Sebastian Smolorz wrote:
>>> Jan Kiszka wrote:
>>>> Sebastian Smolorz wrote:
>>>>> The possibility of redefinition was not the main goal here. As you
>>>>> mentioned it would be problematic. No, I introduced nanosecs_abs_t and
>>>>> nanosecs_rel_t because they are more intuitive and more "speaking" to
>>>>> the programmer. The meaning of a variable of such a type is clear at
>>>>> first sight.
>>>> Yeah, sounds reasonable to me. Then let's move these typedefs to rtdm.h
>>>> and document them as self-explanatory defines of the underlying standard
>>>> types, freezing their width and signedness at the same time.
>>> Agreed.
>>>
>>>> Actually, this would be useful for the driver API of RTDM as well.
>>> That's right. No objections from my side.
>> Done.
>>
>> Though I checked things more then twice, some regression may be hidden,
>> specifically as I changed the signedness of timeout parameters of a few
>> RTDM driver API functions. All documented under
>> ksrc/skins/rtdm/API.CHANGES, and everyone is warned now.
> 
> Here comes a follow-up patch. Compile-tested successfully.
> 

Just applied, thanks.

[I thought about dropping the RTSER_TIMEOUT_* stuff as well, but A)
there are already users and B) it aligns so well with the other defines
for rtser_config.]

Jan


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2006-08-16 19:06 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-08-16  8:49 [Xenomai-core] Time representation in RTDM profiles Jan Kiszka
2006-08-16 10:31 ` [Xenomai-core] " Sebastian Smolorz
2006-08-16 10:52   ` Jan Kiszka
2006-08-16 11:05     ` Sebastian Smolorz
2006-08-16 14:26       ` Jan Kiszka
2006-08-16 18:20         ` Sebastian Smolorz
2006-08-16 19:06           ` Jan Kiszka

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.