Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 21 May 2007 18:52:48 +1000
From:      Lawrence Stewart <lstewart@room52.net>
To:        Ivan Voras <ivoras@fer.hr>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: Writing a plain text file to disk from kernel space
Message-ID:  <46515DE0.20209@room52.net>
In-Reply-To: <f2j5hf$hap$2@sea.gmane.org>
References:  <4649349D.4060101@room52.net>	<200705150847.38838.marc.loerner@hob.de>	<46499491.2010205@room52.net> <f2j5hf$hap$2@sea.gmane.org>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------020600060706080902050400
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Will do Ivan as soon as I've figured everything out.

However, I need some more help from you knowledgeable people.

Attached is a fully self contained kernel module and associated makefile 
that demonstrates the problem I'm having. I've also attached a compiled 
version of the module for FreeBSD 6.2 RELEASE.

The module does the following:

- In its init function, it opens a file descriptor to /var/log/test23.log
- In its init function, it writes a line of text to the opened file 
descriptor
- In its shutdown function, writes a line of text to the opened file 
descriptor
- In its shutdown function, closes the opened file descriptor

The opening of the file descriptor and writing of text done in the 
module's init function works as expected.

The writing of text done in the shutdown function fails with an errno of 
9 (bad file descriptor) returned. The closing of the file descriptor 
doesn't appear to return an error, but I suspect it isn't working either.

 From what I've deduced so far, it appears to be a thread related issue. 
I have verified that the thread struct pointer pointed to by "curthread" 
in the module's init function is different to that in the shutdown function.

I suspect that you can't use a file descriptor that was opened in one 
thread in a completely different thread, but I'm not sure if this is 
true, and if it is true, how to get around it.

Any ideas, explanations, help or suggestions regarding how file IO and 
threading work and how I can get cross-thread file IO working  would be 
most welcome.

Cheers,
Lawrence

Ivan Voras wrote:
> Lawrence Stewart wrote:
>
>> I'll have a play around and report back to the list what I find for 
>> archival purposes.
>
> Please do, and also consider writing a short and instructive tutorial 
> on it! Many people have asked this same question without a 
> to-the-point answer.
>
>
> _______________________________________________
> freebsd-hackers@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to 
> "freebsd-hackers-unsubscribe@freebsd.org"


--------------020600060706080902050400
Content-Type: text/plain;
 name="filewriter.c"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="filewriter.c"

Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKLy8gZmlsZXdyaXRlcgovLwovLyBBIEZyZWVCU0Qga2VybmVsIG1vZHVsZSB0aGF0IGRl
bW9uc3RyYXRlcyBob3cgdG8gb3BlbiBhbmQKLy8gd3JpdGUgYSB0ZXh0IGZpbGUgZnJvbSB3
aXRoaW4gdGhlIGtlcm5lbC4KLy8KLy8gRGF0ZTogTWF5IDIwMDcKLy8gQVVUSE9SUzoKLy8g
ICBKYW1lcyBIZWFseSA8amhlYWx5QHN3aW4uZWR1LmF1PgovLyAgIExhd3JlbmNlIFN0ZXdh
cnQgPGxhc3Rld2FydEBzd2luLmVkdS5hdT4KLy8qKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiNpbmNsdWRlIDxzeXMvcGFyYW0uaD4K
I2luY2x1ZGUgPHN5cy9tb2R1bGUuaD4KI2luY2x1ZGUgPHN5cy9rZXJuZWwuaD4KI2luY2x1
ZGUgPHN5cy9zeXN0bS5oPgojaW5jbHVkZSA8c3lzL3BjcHUuaD4KI2luY2x1ZGUgPHN5cy9w
cm9jLmg+CiNpbmNsdWRlIDxzeXMvc3lzY2FsbHN1YnIuaD4KI2luY2x1ZGUgPHN5cy9mY250
bC5oPgojaW5jbHVkZSA8c3lzL2ZpbGUuaD4KI2luY2x1ZGUgPHN5cy9zeXNwcm90by5oPgoK
Ly8gc29tZSBzaW1wbGUgZGVmaW5lcyB0byBrZWVwIHRoZSBjb2RlIGNsZWFuCiNkZWZpbmUg
TU9ETkFNRSAiZmlsZXdyaXRlciIKI2RlZmluZSBNT0RWRVJTSU9OICAiMS4wIgojZGVmaW5l
IFBBVEggIi92YXIvbG9nL3Rlc3QyMy5sb2ciCgovLyBzb21lIHVnbHkgZ2xvYmFscyB2YXJz
LCB3ZSBtYXkgbG9vayBhdCBnZXR0aW5nIHJpZCBvZiB0aGVzZS4Kc3RhdGljIHZvbGF0aWxl
IGludCBmaWxld3JpdGVyX2hvb2tlZCA9IDA7CnN0YXRpYyBpbnQgdGVzdGZkID0gMDsKCgpz
dGF0aWMgaW50CmZpbGV3cml0ZXJfd3JpdGVsb2coc3RydWN0IHRocmVhZCAqdGQsIGludCBm
ZCwgY2hhciAqbGluZSwgdV9pbnQgbGVuKQp7CiAgc3RydWN0IHVpbyBhdWlvOwogIHN0cnVj
dCBpb3ZlYyBhaW92OwogIGludCBlcnI7CgogIGJ6ZXJvKCZhaW92LCBzaXplb2YoYWlvdikp
OwogIGJ6ZXJvKCZhdWlvLCBzaXplb2YoYXVpbykpOwogIAogIGFpb3YuaW92X2Jhc2UgPSBs
aW5lOwogIGFpb3YuaW92X2xlbiA9IGxlbjsKICAKICBhdWlvLnVpb19pb3YgPSAmYWlvdjsK
ICBhdWlvLnVpb19vZmZzZXQgPSAwOwogIGF1aW8udWlvX3NlZ2ZsZyA9IFVJT19TWVNTUEFD
RTsKICBhdWlvLnVpb19ydyA9IFVJT19XUklURTsKICBhdWlvLnVpb19pb3ZjbnQgPSAxOwog
IGF1aW8udWlvX3Jlc2lkID0gbGVuOwoKICBhdWlvLnVpb190ZCA9IHRkOwoKICBwcmludGYo
ImZkOiAldVxuIiwgZmQpOwogIHByaW50ZihhaW92Lmlvdl9iYXNlKTsKICBlcnIgPSBrZXJu
X3dyaXRldih0ZCwgZmQsICZhdWlvKTsKICBwcmludGYoIndyaXRlIGVycjogJXVcbiIsIGVy
cik7CgogIHJldHVybiBlcnI7Cn0KCgpzdGF0aWMgaW50CmZpbGV3cml0ZXJfY2xvc2Vsb2co
c3RydWN0IHRocmVhZCAqdGQsIGludCBmZCkKewogIHByaW50ZigiZmlsZXdyaXRlcl9jbG9z
ZWxvZyBmZDogJWRcbiIsIGZkKTsKICBpZihmZCkKICB7CiAgICBzdHJ1Y3QgY2xvc2VfYXJn
cyBmZHRtcDsKICAgIGZkdG1wLmZkID0gZmQ7CiAgICBwcmludGYoImZpbGV3cml0ZXJfY2xv
c2Vsb2cgdGhyZWFkIHB0cjogJXhcbiIsICh1bnNpZ25lZCBpbnQpdGQpOwogICAgcmV0dXJu
IGNsb3NlKHRkLCAmZmR0bXApOwogIH0KICByZXR1cm4gMDsKfQoKc3RhdGljIGludApmaWxl
d3JpdGVyX29wZW5sb2coc3RydWN0IHRocmVhZCAqdGQsIGludCAqZmQsIGNoYXIgKnBhdGgp
CnsKICBpbnQgZXJyb3I7CiAgZXJyb3IgPSBrZXJuX29wZW4odGQsIHBhdGgsIFVJT19TWVNT
UEFDRSwgT19XUk9OTFkgfCBPX0NSRUFUIHwgT19BUFBFTkQsIDA2NDQpOwogIGlmICghZXJy
b3IpCiAgewogICAgKmZkID0gdGQtPnRkX3JldHZhbFswXTsKICAgIHByaW50Zigib3Blbmxv
ZyBmZDogJWRcbiIsICpmZCk7CiAgfQogIGVsc2UKICAgIHByaW50Zigib3BlbmxvZyBmYWls
ZWRcbiIpOwogIHJldHVybiBlcnJvcjsKfQoKLy8gY2FsbGVkIHdoZW4gdGhlIG1vZHVsZSBp
cyBmaXJzdCBsb2FkZWQgaW50byB0aGUga2VybmVsLCBob29raW5nIG91ciBmdW5jdGlvbnMg
aW50bwovLyB0aGUgSVAgc3RhY2sgdXNpbmcgcGZpbCBob29rcy4gVGhlc2UgaG9va3MgYXJl
IGRlc2lnbmVkIGZvciBmaXJld2FsbCBwcm9jZXNzaW5nLAovLyBidXQgd29yayBlcXVhbGx5
IHdlbGwgZm9yIG91ciBwdXJwb3NlcyAtIHdlIGp1c3QgbmV2ZXIgdGVsbCB0aGUgc3RhY2sg
dG8gZHJvcCBhIHBhY2tldC4Kc3RhdGljIGludAppbml0X21vZHVsZSh2b2lkKQp7CiAgICBj
aGFyIGZpbGV3cml0ZXJfbGluZVsxMjhdOwoKICAgIC8vIGlmIHdlJ3JlIGFscmVkeSBob29r
ZWQgaW4sIGRvIG5vdGhpbmcKICAgIGlmIChmaWxld3JpdGVyX2hvb2tlZCkKICAgICAgICBy
ZXR1cm4gKDApOwoKICAgIGZpbGV3cml0ZXJfaG9va2VkID0gMTsKCiAgICBmaWxld3JpdGVy
X29wZW5sb2coY3VydGhyZWFkLCAmdGVzdGZkLCBQQVRIKTsKCiAgICBzcHJpbnRmKGZpbGV3
cml0ZXJfbGluZSwgImluaXRfbW9kdWxlKClcdEZpbGU6ICVzXHRjdXJ0aHJlYWQgcHRyOiAl
eFxuIiwgUEFUSCwgKHVuc2lnbmVkIGludCljdXJ0aHJlYWQpOwoKICAgIGZpbGV3cml0ZXJf
d3JpdGVsb2coY3VydGhyZWFkLCB0ZXN0ZmQsIGZpbGV3cml0ZXJfbGluZSwgc3RybGVuKGZp
bGV3cml0ZXJfbGluZSkpOwoKICAgIC8vIHByaW50IG1lc3NhZ2UgdG8gdGhlIHVzZXIncyBj
dXJyZW50IHRlcm1pbmFsIGFzIG9wcG9zZWQgdG8gCiAgICAvLyBwcmludGYgd2hpY2ggcHJp
bnRzIHRvIHRoZSBrZXJuZWwncyBzdGRvdXQgKHdoaWNoIGlzIGF0dGFjaGVkIAogICAgLy8g
dG8gZ2V0dHkgMCkKICAgIHVwcmludGYoIkxvYWRlZCAlcyAlc1xuIiwgTU9ETkFNRSwgTU9E
VkVSU0lPTik7CgogICAgcmV0dXJuIDA7Cn0KCi8vIGNhbGxlZCB3aGVuIHRoZSBtb2R1bGUg
aXMgdW5sb2FkZWQgZnJvbSB0aGUga2VybmVsLCB1bmhvb2tpbmcgb3VyIGZ1bmN0aW9ucyBm
cm9tCi8vIHRoZSBJUCBzdGFja3MuIApzdGF0aWMgaW50CmRlaW5pdF9tb2R1bGUodm9pZCkK
ewogICAgY2hhciBmaWxld3JpdGVyX2xpbmVbMTI4XTsKCiAgICAvLyBpZiB3ZSdyZSBhbHJl
YWR5IHVuaG9va2VkLCBkbyBub3RoaW5nCiAgICBpZiAoIWZpbGV3cml0ZXJfaG9va2VkKQog
ICAgICAgIHJldHVybiAoMCk7CgogICAgLy8gbGV0IG91ciBtb2R1bGUga25vdyB3ZSdyZSBu
byBsb25nZXIgaG9va2VkIGluCiAgICBmaWxld3JpdGVyX2hvb2tlZCA9IDA7CgogICAgc3By
aW50ZihmaWxld3JpdGVyX2xpbmUsICJkZWluaXRfbW9kdWxlKClcdEZpbGU6ICVzXHRjdXJ0
aHJlYWQgcHRyOiAleFxuXG4iLCBQQVRILCAodW5zaWduZWQgaW50KWN1cnRocmVhZCk7Cgog
ICAgZmlsZXdyaXRlcl93cml0ZWxvZyhjdXJ0aHJlYWQsIHRlc3RmZCwgZmlsZXdyaXRlcl9s
aW5lLCBzdHJsZW4oZmlsZXdyaXRlcl9saW5lKSk7IAoKICAgIGZpbGV3cml0ZXJfY2xvc2Vs
b2coY3VydGhyZWFkLCB0ZXN0ZmQpOwoKICAgIHVwcmludGYoIlVubG9hZGVkICVzICVzXG4i
LCBNT0ROQU1FLCBNT0RWRVJTSU9OKTsKCiAgICByZXR1cm4gMDsKfQoKLy8gVGhpcyBpcyB0
aGUgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgdG8gbG9hZCBhbmQgdW5sb2FkIHRoZSBmdW5j
dGlvbnMuIEl0IGhhbmRzIG9mZgovLyB0byBzZXBlcmF0ZSBmdW5jdGlvbnMgdG8gZG8gdGhl
IHdvcmsuCnN0YXRpYyBpbnQgbG9hZF9oYW5kbGVyKG1vZHVsZV90IG1vZCwgaW50IHdoYXQs
IHZvaWQgKmFyZykKewoJaW50IGVyciA9IDA7CgoJc3dpdGNoKHdoYXQpCgl7CgkJY2FzZSBN
T0RfTE9BRDoKICAgICAgZXJyID0gaW5pdF9tb2R1bGUoKTsKCQkJYnJlYWs7CgoJCWNhc2Ug
TU9EX1VOTE9BRDoKICAgICAgZXJyID0gZGVpbml0X21vZHVsZSgpOwoJCQlicmVhazsKCgkJ
ZGVmYXVsdDoJCQoJCQllcnIgPSBFSU5WQUw7CgkJCWJyZWFrOwoJfQoKCXJldHVybihlcnIp
Owp9CgovLyBhIHN0cnVjdCB0aGF0IGhvbGRzIGJhc2ljIGRhdGEgb24gdGhlIG1vZHVsZQpz
dGF0aWMgbW9kdWxlZGF0YV90IGZpbGV3cml0ZXJfbW9kID0KewoJImZpbGV3cml0ZXIiLCAg
ICAgIC8vbW9kdWxlJ3MgbmFtZQoJbG9hZF9oYW5kbGVyLCAvL2V4ZWN1dGlvbiBlbnRyeSBw
b2ludCBmb3IgdGhlIG1vZHVsZQoJTlVMTAp9OwoKLy9QYXJhbSAxOiBuYW1lIG9mIHRoZSBr
ZXJuZWwgbW9kdWxlCi8vUGFyYW0gMjogbW9kdWxlZGF0YV90IHN0cnVjdCBjb250YWluaW5n
IGluZm8gYWJvdXQgdGhlIGtlcm5lbCBtb2R1bGUgYW5kIHRoZSBleGVjdXRpb24gZW50cnkg
cG9pbnQgZm9yIHRoZSBtb2R1bGUKLy9QYXJhbSAzOiBQdWxsZWQgZnJvbSB0aGUgc3lzaW5p
dF9zdWJfaWQgZW51bWVyYXRpb24gaW4gL3Vzci9pbmNsdWRlL3N5cy9rZXJuZWwuaAovLyAg
ICAgICAgIFNlZW1zIHRvIGRlZmluZSB0aGUgb3JkZXIgaW4gd2hpY2ggbW9kdWxlcyBzaG91
bGQgYmUgaW5pdGlhbGl6ZWQgYnkgdGhlIHN5c3RlbQovL1BhcmFtIDQ6IFB1bGxlZCBmcm9t
IHRoZSBzeXNpbml0X2VsZW1fb3JkZXIgZW51bWVyYXRpb24gaW4gL3Vzci9pbmNsdWRlL3N5
cy9rZXJuZWwuaAovLyAgICAgICAgIERlZmluZXMgdGhlIG9yZGVyIG9mIHRoaXMga2xkJ3Mg
aW5pdGlhbGl6YXRpb24gd2l0aGluIHRoZSBzdWJzeXN0ZW0gZGVmaW5lZCBieSBwYXJhbSAz
CkRFQ0xBUkVfTU9EVUxFKGZpbGV3cml0ZXIsIGZpbGV3cml0ZXJfbW9kLCBTSV9TVUJfS0xE
LCBTSV9PUkRFUl9BTlkpOwo=
--------------020600060706080902050400
Content-Type: application/octet-stream;
 name="filewriter.ko"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="filewriter.ko"

f0VMRgEBAQkAAAAAAAAAAAMAAwABAAAA3AUAADQAAACQCgAAAAAAADQAIAADACgAEQAOAAEA
AAAAAAAAAAAAAAAAAAAsCQAALAkAAAUAAAAAEAAAAQAAACwJAAAsGQAALBkAALAAAAC4AAAA
BgAAAAAQAAACAAAAWAkAAFgZAABYGQAAeAAAAHgAAAAGAAAABAAAABEAAAAgAAAAEgAAABoA
AAAbAAAAHwAAAB0AAAAAAAAAFAAAABYAAAAPAAAAAAAAABkAAAAeAAAAFwAAABwAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAABEAAAAAAAAA
DgAAAAAAAAAAAAAAFQAAABAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlAAAAAAA
AAADAAEAAAAAAGABAAAAAAAAAwACAAAAAABgAwAAAAAAAAMAAwAAAAAATAQAAAAAAAADAAQA
AAAAANwFAAAAAAAAAwAFAAAAAAAVCAAAAAAAAAMABgAAAAAAJAkAAAAAAAADAAcAAAAAACgJ
AAAAAAAAAwAIAAAAAAAsGQAAAAAAAAMACQAAAAAAWBkAAAAAAAADAAoAAAAAANAZAAAAAAAA
AwALAAAAAADcGQAAAAAAAAMADAAAAAAAAAAAAAAAAAADAA0AWgAAAAAAAAAAAAAAEAAAAJ0A
AAAoCQAAAAAAABAA8f8BAAAAWBkAAAAAAAARAPH/IAAAAAAAAAAAAAAAEAAAACgAAAAAAAAA
AAAAABAAAAA9AAAAAAAAAAAAAAAQAAAAhgAAACgJAAAAAAAAEADx/0MAAAAAAAAAAAAAABAA
AABPAAAAAAAAAAAAAAAQAAAAbgAAACQJAAAAAAAAEADx/9sAAADcGQAAAAAAABAA8f9ZAAAA
AAAAAAAAAAAQAAAA1AAAANwZAAAAAAAAEADx/woAAADQGQAAAAAAABEA8f/nAAAA5BkAAAAA
AAAQAPH/YQAAAAAAAAAAAAAAEAAAALkAAAAsCQAAAAAAABAA8f9oAAAAAAAAAAAAAAAQAAAA
AF9EWU5BTUlDAF9HTE9CQUxfT0ZGU0VUX1RBQkxFXwB1cHJpbnRmAG1vZHVsZV9yZWdpc3Rl
cl9pbml0AGJ6ZXJvAGtlcm5fd3JpdGV2AGtlcm5fb3BlbgBzcHJpbnRmAHN0cmxlbgBjbG9z
ZQBfX3N0YXJ0X3NldF9zeXNpbml0X3NldABfX3N0b3Bfc2V0X3N5c2luaXRfc2V0AF9fc3Rh
cnRfc2V0X21vZG1ldGFkYXRhX3NldABfX3N0b3Bfc2V0X21vZG1ldGFkYXRhX3NldABfZWRh
dGEAX19ic3Nfc3RhcnQAX2VuZAAEBgAACAAAAFoGAAAIAAAAmQYAAAgAAACuBgAACAAAAMoG
AAAIAAAA5gYAAAgAAADsBgAACAAAAP8GAAAIAAAABAcAAAgAAAAsBwAACAAAADgHAAAIAAAA
PQcAAAgAAABCBwAACAAAAFkHAAAIAAAAZwcAAAgAAAB3BwAACAAAAHwHAAAIAAAAogcAAAgA
AAC4BwAACAAAAL4HAAAIAAAAzgcAAAgAAADTBwAACAAAANgHAAAIAAAA4gcAAAgAAAD5BwAA
CAAAACQJAAAIAAAAKAkAAAgAAAA4GQAACAAAADwZAAAIAAAAQBkAAAgAAABQGQAACAAAAFQZ
AAAIAAAA8AUAAAITAAD7BQAAAhMAAD4GAAACDgAARgYAAAIOAABhBgAAAg4AAPEGAAACDgAA
wwcAAAIOAADnBwAAAg4AAP4HAAACDgAAUQYAAAIVAADQBgAAAhYAABAHAAACGQAAiAcAAAIZ
AAAgBwAAAh0AAJgHAAACHQAARwcAAAIRAAANCAAAAh8AADQZAAABEgAAVYnlV1ZTg+woagiN
XcxTideJxuj8////aiCNRdRQ6Pz///9Xi0UIaCAIAACJRcyLRQyJXdSJdfCJRdDHRdwAAAAA
x0XgAAAAAMdF6AEAAADHRewBAAAAx0XYAQAAAIlF5Oj8/////3XM6Pz///+NRdRQV1bo/P//
/4PEKFBoKAgAAInD6Pz///+NZfSJ2FteX8nDkFWJ5VZTgewEAQAAi0UMhcB0FkgPhM8AAACN
ZfhbuBYAAABeycONdgCh4BkAAIXAdAsxwI1l+FteycOJ9scF4BkAAAEAAABkix0AAAAAaKQB
AABoCQIAAGoBaDcIAABT6Pz///+DxBSFwA+FAgEAAIuDBAEAAKPcGQAAUGhLCAAA6Pz///9Y
WmShAAAAAFBoNwgAAGhbCAAAjZ14////U+j8////g8QQZIs1AAAAAFPo/P///4kEJFOJ8IsV
3BkAAOin/v//XlhohQgAAGgVCAAAaIkIAADo/P///4PEDDHA6U7///+NdgCh4BkAAIXAD4Q8
////xwXgGQAAAAAAAGShAAAAAFBoNwgAAGiXCAAAjZ34/v//U+j8////g8QQZIs1AAAAAFPo
/P///4kEJFOLFdwZAACJ8Ogv/v//WVtkizUAAAAAix3cGQAAU2jECAAA6Pz///9YhdtadSRo
hQgAAGgVCAAAaOAIAADpZf///2jwCAAA6Pz///9Y6Qb///+JnfT+//9WaAAJAADo/P///1lb
jYX0/v//UFbo/P///1ha67hmaWxld3JpdGVyAGZkOiAldQoAd3JpdGUgZXJyOiAldQoAL3Zh
ci9sb2cvdGVzdDIzLmxvZwBvcGVubG9nIGZkOiAlZAoAaW5pdF9tb2R1bGUoKQlGaWxlOiAl
cwljdXJ0aHJlYWQgcHRyOiAleAoAMS4wAExvYWRlZCAlcyAlcwoAZGVpbml0X21vZHVsZSgp
CUZpbGU6ICVzCWN1cnRocmVhZCBwdHI6ICV4CgoAZmlsZXdyaXRlcl9jbG9zZWxvZyBmZDog
JWQKAFVubG9hZGVkICVzICVzCgBvcGVubG9nIGZhaWxlZAoAZmlsZXdyaXRlcl9jbG9zZWxv
ZyB0aHJlYWQgcHRyOiAleAoALBkAAEgZAAAAAAAC////DwAAAAA8GQAAFQgAAHAGAAAAAAAA
AQAAAAIAAAA8GQAAFQgAAAQAAACUAAAABQAAAGADAAAGAAAAYAEAAAoAAADsAAAACwAAABAA
AAARAAAATAQAABIAAACQAQAAEwAAAAgAAAAWAAAAAAAAAPr//28gAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgZAAAAAAAAAAAAAABHQ0M6IChHTlUpIDMu
NC40IFtGcmVlQlNEXSAyMDA1MDUxOAAALnN5bXRhYgAuc3RydGFiAC5zaHN0cnRhYgAuaGFz
aAAuZHluc3ltAC5keW5zdHIALnJlbC5keW4ALnRleHQALnJvZGF0YQBzZXRfc3lzaW5pdF9z
ZXQAc2V0X21vZG1ldGFkYXRhX3NldAAuZGF0YQAuZHluYW1pYwAuZ290AC5ic3MALmNvbW1l
bnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAABQAAAAIA
AACUAAAAlAAAAMwAAAACAAAAAAAAAAQAAAAEAAAAIQAAAAsAAAACAAAAYAEAAGABAAAAAgAA
AwAAAA4AAAAEAAAAEAAAACkAAAADAAAAAgAAAGADAABgAwAA7AAAAAAAAAAAAAAAAQAAAAAA
AAAxAAAACQAAAAIAAABMBAAATAQAAJABAAACAAAAAAAAAAQAAAAIAAAAOgAAAAEAAAAGAAAA
3AUAANwFAAA5AgAAAAAAAAAAAAAEAAAAAAAAAEAAAAABAAAAMgAAABUIAAAVCAAADwEAAAAA
AAAAAAAAAQAAAAEAAABIAAAAAQAAAAIAAAAkCQAAJAkAAAQAAAAAAAAAAAAAAAQAAAAAAAAA
WAAAAAEAAAACAAAAKAkAACgJAAAEAAAAAAAAAAAAAAAEAAAAAAAAAGwAAAABAAAAAwAAACwZ
AAAsCQAALAAAAAAAAAAAAAAABAAAAAAAAAByAAAABgAAAAMAAABYGQAAWAkAAHgAAAADAAAA
AAAAAAQAAAAIAAAAewAAAAEAAAADAAAA0BkAANAJAAAMAAAAAAAAAAAAAAAEAAAABAAAAIAA
AAAIAAAAAwAAANwZAADcCQAACAAAAAAAAAAAAAAABAAAAAAAAACFAAAAAQAAAAAAAAAAAAAA
3AkAACUAAAAAAAAAAAAAAAEAAAAAAAAAEQAAAAMAAAAAAAAAAAAAAAEKAACOAAAAAAAAAAAA
AAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAAA4DQAAkAIAABAAAAAXAAAABAAAABAAAAAJAAAA
AwAAAAAAAAAAAAAAyA8AANgBAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA
AAAkCQAABAAAAAEABwAxAAAALBkAABAAAAABAAkASwAAADwZAAAMAAAAAQAJAFoAAABwBgAA
pQEAAAIABQBnAAAAKAkAAAQAAAABAAgAnQAAAEgZAAAQAAAAAQAJALkAAADcGQAABAAAAAEA
DADAAAAA4BkAAAQAAAABAAwA0gAAANwFAACTAAAAAgAFAAAAAACUAAAAAAAAAAMAAQAAAAAA
YAEAAAAAAAADAAIAAAAAAGADAAAAAAAAAwADAAAAAABMBAAAAAAAAAMABAAAAAAA3AUAAAAA
AAADAAUAAAAAABUIAAAAAAAAAwAGAAAAAAAkCQAAAAAAAAMABwAAAAAAKAkAAAAAAAADAAgA
AAAAACwZAAAAAAAAAwAJAAAAAABYGQAAAAAAAAMACgAAAAAA0BkAAAAAAAADAAsAAAAAANwZ
AAAAAAAAAwAMAAAAAAAAAAAAAAAAAAMADQDmAAAAAAAAAAAAAAAQAAAA7QAAACgJAAAAAAAA
EADx/wkBAABYGQAAAAAAABEA8f8SAQAAAAAAAAAAAAAQAAAAGgEAAAAAAAAAAAAAEAAAAC8B
AAAAAAAAAAAAABAAAAA1AQAAKAkAAAAAAAAQAPH/TAEAAAAAAAAAAAAAEAAAAFgBAAAAAAAA
AAAAABAAAABiAQAAJAkAAAAAAAAQAPH/egEAANwZAAAAAAAAEADx/4YBAAAAAAAAAAAAABAA
AACOAQAA3BkAAAAAAAAQAPH/lQEAANAZAAAAAAAAEQDx/6sBAADkGQAAAAAAABAA8f+wAQAA
AAAAAAAAAAAQAAAAtwEAACwJAAAAAAAAEADx/9IBAAAAAAAAAAAAABAAAAAAX19zZXRfc3lz
aW5pdF9zZXRfc3ltX2ZpbGV3cml0ZXJtb2R1bGVfc3lzX2luaXQAZmlsZXdyaXRlcm1vZHVs
ZV9zeXNfaW5pdABmaWxld3JpdGVyX21vZABsb2FkX2hhbmRsZXIAX19zZXRfbW9kbWV0YWRh
dGFfc2V0X3N5bV9fbW9kX21ldGFkYXRhX21kX2ZpbGV3cml0ZXIAX21vZF9tZXRhZGF0YV9t
ZF9maWxld3JpdGVyAHRlc3RmZABmaWxld3JpdGVyX2hvb2tlZABmaWxld3JpdGVyX3dyaXRl
bG9nAHByaW50ZgBfX3N0YXJ0X3NldF9tb2RtZXRhZGF0YV9zZXQAX0RZTkFNSUMAdXByaW50
ZgBtb2R1bGVfcmVnaXN0ZXJfaW5pdABiemVybwBfX3N0b3Bfc2V0X3N5c2luaXRfc2V0AGtl
cm5fd3JpdGV2AGtlcm5fb3BlbgBfX3N0YXJ0X3NldF9zeXNpbml0X3NldABfX2Jzc19zdGFy
dABzcHJpbnRmAF9lZGF0YQBfR0xPQkFMX09GRlNFVF9UQUJMRV8AX2VuZABzdHJsZW4AX19z
dG9wX3NldF9tb2RtZXRhZGF0YV9zZXQAY2xvc2UA
--------------020600060706080902050400
Content-Type: text/plain;
 name="Makefile"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="Makefile"

U1JDUz1maWxld3JpdGVyLmMKS01PRD1maWxld3JpdGVyCgouaW5jbHVkZSA8YnNkLmttb2Qu
bWs+IAoKCg==
--------------020600060706080902050400--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?46515DE0.20209>