Hi Nicolás,

>> Thanks for the note and for the link.  Does this mean for example that
>> GPLd code is not allowed to link to the CUDA libraries (which are
>> non-GPL and not normally distributed with the OS)?

> The libraries don't have to be GPL. They can also be a *more liberal* 
> license, 
> such as LGPL or BSD.

I was asking specifically about the CUDA libraries:
http://developer.download.nvidia.com/compute/cuda/2_2/toolkit/docs/cudaprof_eula.pdf
This license expressly does NOT include any source code and forbids 
efforts such as reverse engineering to recontruct the source code.  So 
it is not 'more liberal' than GPL.

My question is, can GPL code be linked against the CUDA library?  I 
assume from what you wrote previously, that the answer is 'no' but 
wanted to confirm it.

> A GPL program, however, normally can't be linked to a proprietary library, 
> unless the program has an exception on its license saying the copyright 
> holder explicitly allows linking to that one proprietary library.

I am asking about a GPL program that does not carry any license 
exceptions: straight vanilla GPL2.

> Or a GPL 
> library could say proprietary programs are allowed to link to it but only if 
> they use a certain subset of API functions.

I'm not asking about this case, I'm asking about the case of a GPL 
program calling a non-GPL library.

>> Does this mean that GPL programs can  
>> not display on an NVIDIA graphics card (since they need to send data to
>> an NVIDIA device driver, not distributed as part of the OS?).

> A device driver isn't "linked" to the program that uses it; they interact via 
> IPC. Otherwise, it wouldn't be legal for proprietary programs to run on 
> Linux, since they are making syscalls to the Linux kernel, which is GPL.

I'm confused about this point.

On Linux, device drivers are executable code blocks that can be 
dynamically loaded into the running kernel.  This is essentially the 
same mechanism by which a running program loads a library.  The kernel 
(GPL in the case of Linux) has to load a '.ko' object file.  If this is 
(for example) a proprietary device driver from NVIDIA, this would appear 
to violate GPL as you have described it.

[As far as I know, data is not passed by a program to a kernel device 
driver via IPC (which usuallly involves sockets).  Data is passed by a 
program to a device driver on the stack.  The device driver code is then 
executed by the kernel in 'kernel mode' rather than in 'user mode'. Data 
in the heap is usually explicitly copied from the process memory segment 
(userland) to kmalloc()d space in the kernel context (kernel space). 
But since I'm a physicist and not a computer scientist I could be wrong 
about this.]

Cheers,
        Bruce






_______________________________________________
boinc_dev mailing list
[email protected]
http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_dev
To unsubscribe, visit the above URL and
(near bottom of page) enter your email address.

Reply via email to