Thanks for the fix! Sorry, I don't know too much about the intricacies of
NetBSD. My first version seemed to work on my NetBSD instance though, so I
wrongly assumed it would work for most versions of NetBSD.

I tested this on FreeBSD and it works, but I don't know the intricacies of
FreeBSD either.

I applied your incremental in my next patch.

http://patchwork.openvswitch.org/patch/4367/


Again thanks!

Ryan

On 6/2/14 10:38 PM, "YAMAMOTO Takashi" <yamam...@valinux.co.jp> wrote:

>> This patch also checks the system platform as clock_gettime
>> could exist on different platforms but with different values of
>> CLOCK_MONOTONIC and different definitions of 'struct timespec'.
>> In this case, the system call would be expected to catch the
>> error, which is dangerous.
>> 
>> This patch ensures Linux, NetBSD and FreeBSD platforms use
>> clock_gettime with their corresponding correct values and
>> definitions. All other platforms use time.time().
>
>thanks.
>
>the following is incremental diff to fix NetBSD case.
>please feel free to fold it into yours.
>
>i haven't checked FreeBSD part.
>
>YAMAMOTO Takashi
>
>From 71891a0fc4ba892e26fec8e704167ab8ccde408a Mon Sep 17 00:00:00 2001
>From: YAMAMOTO Takashi <yamam...@valinux.co.jp>
>Date: Tue, 3 Jun 2014 14:17:23 +0900
>Subject: [PATCH] timeval: Fix NetBSD case
>
>Signed-off-by: YAMAMOTO Takashi <yamam...@valinux.co.jp>
>---
> python/ovs/timeval.py | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)
>
>diff --git a/python/ovs/timeval.py b/python/ovs/timeval.py
>index 6f3cbb3..a34ef2b 100644
>--- a/python/ovs/timeval.py
>+++ b/python/ovs/timeval.py
>@@ -16,6 +16,7 @@ import sys
> import time
> 
> LIBRT = 'librt.so.1'
>+clock_gettime_name = 'clock_gettime'
> 
> try:
>     import ctypes
>@@ -24,6 +25,12 @@ try:
>         CLOCK_MONOTONIC = 1
>         time_t = ctypes.c_long
>     elif sys.platform.startswith("netbsd"):
>+        # NetBSD uses function renaming for ABI versioning.  While the
>proper
>+        # way to get the appropriate version is of course "#include
><time.h>",
>+        # it is difficult with ctypes.  The following is appropriate for
>+        # recent versions of NetBSD, including NetBSD-6.
>+        LIBRT = 'libc.so.12'
>+        clock_gettime_name = '__clock_gettime50'
>         CLOCK_MONOTONIC = 3
>         time_t = ctypes.c_int64
>     elif sys.platform.startswith("freebsd"):
>@@ -39,7 +46,7 @@ try:
>         ]
> 
>     librt = ctypes.CDLL(LIBRT)
>-    clock_gettime = librt.clock_gettime
>+    clock_gettime = getattr(librt, clock_gettime_name)
>     clock_gettime.argtypes = [ctypes.c_int, ctypes.POINTER(timespec)]
> except:
>     # Librt shared library could not be loaded
>-- 
>1.9.0
>_______________________________________________
>dev mailing list
>dev@openvswitch.org
>https://urldefense.proofpoint.com/v1/url?u=http://openvswitch.org/mailman/
>listinfo/dev&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=TfBS78Vw3dzttvXidhbffg%
>3D%3D%0A&m=EIzWMNYZlk7pLtwllkmlJqm%2FDcGWDbOB7Icp95%2Fr1tA%3D%0A&s=0e9550c
>56b07bdd67032cee1451ade1acb6b88ebcdc237cc36e1cb1f61e8855b

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to