1

I would like to use some constants defined in this Linux userspace API header file in my permissive (MIT) licensed project.

I could simply #include this header in my project, which will use the version on the local filesystem. This is what I do now and shouldn't present any licensing difficulties.

However, I have run into the issue where some older systems may not have this file, or may have it but with some entries missing, which may cause compile errors. So I would like to include the data from a portion of this file, basically the mapping of names to numbers you see there, with my project.

Can I simply copy/paste the 20-odd values into my source? If not, could I type out a new version of the file myself, perhaps with new constant names? Any other options I can use to avoid running afoul of the GPL?

The portion I'm interested in looks roughly like this (essentially the entire current contents of the file):

#define KPF_LOCKED      0
#define KPF_ERROR       1
#define KPF_REFERENCED      2
#define KPF_UPTODATE        3
#define KPF_DIRTY       4
#define KPF_LRU         5
#define KPF_ACTIVE      6
#define KPF_SLAB        7
#define KPF_WRITEBACK       8
#define KPF_RECLAIM     9
#define KPF_BUDDY       10

/* 11-20: new additions in 2.6.31 */
#define KPF_MMAP        11
#define KPF_ANON        12
#define KPF_SWAPCACHE       13
#define KPF_SWAPBACKED      14
#define KPF_COMPOUND_HEAD   15
#define KPF_COMPOUND_TAIL   16
#define KPF_HUGE        17
#define KPF_UNEVICTABLE     18
#define KPF_HWPOISON        19
#define KPF_NOPAGE      20

#define KPF_KSM         21
#define KPF_THP         22
#define KPF_BALLOON     23
#define KPF_ZERO_PAGE       24
#define KPF_IDLE        25
#define KPF_PGTABLE     26
  • "Can I simply copy/paste the 20-odd values into my source? If not, could I type out a new version of the file myself, perhaps with new constant names?" - Whether you use copy/paste, or whether you type it yourself, that is still copying according to copyright law. – Brandin Jan 7 at 5:51
  • 2
    It is likely that the portion you intend to copy is not copyrightable. See: How does copyrights apply to source code header files?. However, no one on here can give you a definitive legal opinion on your specific case. For that you'll need legal advice. – Brandin Jan 7 at 5:52
  • "where some older systems may not have this file, or may have it but with some entries missing, which may cause compile errors." - Why can't you simply require your users (who must have some sort of development experience since they will be building it, anyway) to have or obtain the correct file? Then you avoid any licensing issues as well as compatibility, maintainability for you, etc. – Brandin Jan 7 at 12:55
  • @Brandin - actually I found many suggestions that while copying constants from a copyrighted file might be a grey area, typing up the constants yourself into a new file (e.g,. based on documentation) is acceptable as "lists of facts" aren't copyrightable. In this case, that file itself is the best documentation, so I thought that maybe someone re-writing it myself using it as a guide would be preferable. BTW, that legal advice is off topic here seems ... weird. A large majority of licensing questions seem to be asking for exactly that: e.g., 8 out of 10 of those showing on the sidebar for me. – BeeOnRope Jan 7 at 17:32
  • 1
    @BeeOnRope, if an older kernel version doesn't have some of the constants you use, then it is likely that the behavior you expect when using those values is also not present in those kernels. You might want to mention a minimum kernel version that is required for your application. – Bart van Ingen Schenau Jan 7 at 18:09

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Browse other questions tagged or ask your own question.