[Iftop-users] mac os x 10.2.6 compile?

Siri Dhyan Singh sirid at positivemind.com
Mon, 25 Aug 2003 15:50:50 -0700


Siri Dhyan Singh wrote:

> 
> 
> Chris Lightfoot wrote:
> 
>> On Sat, Aug 23, 2003 at 10:06:23AM -0700, Siri Dhyan Singh wrote:
>>
>>> Chris Lightfoot wrote:
>>
>>
>>
>>>> Yep. It's a brokenness in Mac OS's POSIX threads routines.
>>>> I'll try to do a fix later.
>>
>>
>>
>> (At this point I should say that I think the Mac OS
>> behaviour is in fact standards-compliant, but unhelpful.)
>>
>>
>>> Alright thanks!
>>>
>>> I'm fairly lightweight when it comes to C/C++ but I do have a 
>>> programming background so if there's anything I can do to help please 
>>> let me know.
>>
>>
>>
>> Have you tried the two patches I sent? iftop compiles fine
>> on my Mac now but I suspect my version is a little out of
>> sync with 0.13.
> 
> 
> I just applied the patches and it seems to be working fine.  I supply a 
> n interface of en0 as its OS X and I'm off and running.

A little more background here.  Basically on OS X 10.2.6 (and other BSDs 
I suspect) I'm pulling up a couple of pseudo devices used for tunneling 
which are probably not appropriate as defaults for iftop.  Here's a 
little patch.  My first code contribution to an open source project - a 
historic moment ;-).

diff -u options.orig options.c
--- options.orig        Mon Aug 25 15:30:26 2003
+++ options.c   Mon Aug 25 15:33:32 2003
@@ -40,6 +40,8 @@
  static char *bad_interface_names[] = {
              "lo:",
             "lo",
+            "stf",     //pseudo-device 6to4 tunnel interface
+            "gif",     //psuedo-device generic tunnel interface
              "dummy",
              "vmnet",
              NULL        /* last entry must be NULL */

Kind Regards,

Siri Dhyan

> 
>>
>>
>> (Stop reading here if you don't want to know the gory
>> details.)
>>
>> The background to this problem: different systems need
>> different combinations of compiler options to get working
>> POSIX threads support. Linux and Solaris, in particular,
>> are quite different, and IIRC the compiler options which
>> work on Linux give programs which compile *but when run
>> cannot start threads* on Solaris.
> 
> 
> ahh how nice and frustrating :-)
> 
>>
>> So config/pthread.c is a small test program which spawns a
>> thread which then changes the value of a variable; the
>> controlling thread then cancels the subthread and verifies
>> that the variable's value has changed. This allows us to
>> detect whether we have threads that work at all; the
>> configure script can try compiling this program with
>> various different options until it works.
>>
>> Unfortunately, on Mac OS X, the program hung while trying
>> to cancel (==kill) the subthread. This was because I had
>> assumed -- incorrectly, it seems -- that the function
>> yield(2) was a cancellation point. While it is (or appears
>> to be) on Linux and Solaris, it isn't in Mac OS X. While
>> this might seem surprising, it apparently conforms to the
>> standard.  Slightly more surprisingly, replacing yield()
>> with sleep(1) also caused the thing to hang, which I
>> believe is wrong, since
>>     http://www.opengroup.org/onlinepubs/7908799/xsh/threads.html
>> lists sleep as a cancellation point.
>>
>> The take home message? Threads: Just Say No.
> 
> 
> many thanks
> 
> -Siri dhyan
> 
>>
> 
> 
> _______________________________________________
> iftop-users mailing list
> iftop-users@lists.beasts.org
> http://lists.beasts.org/mailman/listinfo/iftop-users