From owner-freebsd-arch@FreeBSD.ORG Sun Nov 25 19:18:58 2012 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D73565B7 for ; Sun, 25 Nov 2012 19:18:58 +0000 (UTC) (envelope-from freebsd@damnhippie.dyndns.org) Received: from duck.symmetricom.us (duck.symmetricom.us [206.168.13.214]) by mx1.freebsd.org (Postfix) with ESMTP id 3C5AD8FC08 for ; Sun, 25 Nov 2012 19:18:57 +0000 (UTC) Received: from damnhippie.dyndns.org (daffy.symmetricom.us [206.168.13.218]) by duck.symmetricom.us (8.14.5/8.14.5) with ESMTP id qAPJIvwD050325 for ; Sun, 25 Nov 2012 12:18:57 -0700 (MST) (envelope-from freebsd@damnhippie.dyndns.org) Received: from [172.22.42.240] (revolution.hippie.lan [172.22.42.240]) by damnhippie.dyndns.org (8.14.3/8.14.3) with ESMTP id qAPJItO6036431; Sun, 25 Nov 2012 12:18:55 -0700 (MST) (envelope-from freebsd@damnhippie.dyndns.org) Subject: Porting linux drivers [was: Re: [RFC] sema_wait_sig] From: Ian Lepore To: Oleksandr Tymoshenko In-Reply-To: References: Content-Type: text/plain; charset="us-ascii" Date: Sun, 25 Nov 2012 12:18:55 -0700 Message-ID: <1353871135.69940.77.camel@revolution.hippie.lan> Mime-Version: 1.0 X-Mailer: Evolution 2.32.1 FreeBSD GNOME Team Port Content-Transfer-Encoding: 7bit Cc: arch@freebsd.org X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Nov 2012 19:18:58 -0000 On Thu, 2012-11-22 at 22:12 -0800, Oleksandr Tymoshenko wrote: > Hello, > > Is there any particular reason FreeBSD does not have sema_wait_sig > function? It seems to be easily implementable using cv_wait_sig > function. > > The reason I'm asking is that I'm getting some Linux drivers > ported to FreeBSD and the code in question relies on semaphores > and there is no obvious alternative to down_interruptible function. > I realize that not all approaches to driver development are easily > mappable from OS to OS but in this case lack of cv_wait_sig seems > like gap in API. Unless of course there is strong rationale behind it. As if this thread weren't contentious enough already, it seems to me to be the perfect lead-in to a question I've long wondered about... Given that linux drivers are pretty much universally GPL licensed, what's the legality of "porting" them (whatever that means) to freebsd? Just how much can you cobble from a GPL'd linux driver in creating a BSD-licensed freebsd driver? I've done my best to avoid EVER looking at linux driver code when working on freebsd drivers, because I don't know the legalistic answers to such questions. I know the "what feels right to my moral sense" answer, which is if you study the linux driver and then write essentially the same driver for freebsd, it doesn't matter if you've re-typed the code with different variable names, you've copied it. I've peeked at the linux code from time to time, mostly to confirm my understanding of poorly-written chip datasheets, or to find the meaning of some status register bit that doesn't seem to be documented elsewhere. But it would be nice to know where the proper lines are that should not be crossed. -- Ian