From owner-freebsd-arch@FreeBSD.ORG Fri Mar 9 21:36:50 2012 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7C792106566C for ; Fri, 9 Mar 2012 21:36:50 +0000 (UTC) (envelope-from rmh.aybabtu@gmail.com) Received: from mail-iy0-f182.google.com (mail-iy0-f182.google.com [209.85.210.182]) by mx1.freebsd.org (Postfix) with ESMTP id 37A1A8FC12 for ; Fri, 9 Mar 2012 21:36:49 +0000 (UTC) Received: by iahk25 with SMTP id k25so3596580iah.13 for ; Fri, 09 Mar 2012 13:36:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:date:x-google-sender-auth:message-id:subject :from:to:content-type; bh=pOsnFkoUpXViJHXccWQT4BH2unQQQm4WdbV13h5Znaw=; b=T1GjqoczQWcyhN7A9ZUhOd1ecNKIn9gTsv3rwn22g4DOu3XiJCY6J0AvY6VzMP3gf/ eGqfOzPcgyNDkcMwbNPWgQDNJEgmyuaUFpQpgr6AQx1hr0drPiFMeDsR2D+CSbCPjvr1 VSFuyDyNsZNa6i5WljW8AeWGpR0/Gw0tNkrvOtFWNA0sTW/3i8Y5sEa/jb54y49BEHJl bOtqRC1BquqZvUP5RPInt/n7n+kXok/4BeEHSnj0f27JNh+GP9B/zvY8/abye9BfNsf5 06tRVSDR3MqsnUURaXOPEgNpxPQQR64OMHhBjhh04R/SvFFDbypPByfZ2DiOMZEm+V2n 32ZA== MIME-Version: 1.0 Received: by 10.50.156.196 with SMTP id wg4mr5757123igb.13.1331329008784; Fri, 09 Mar 2012 13:36:48 -0800 (PST) Sender: rmh.aybabtu@gmail.com Received: by 10.43.130.201 with HTTP; Fri, 9 Mar 2012 13:36:48 -0800 (PST) Date: Fri, 9 Mar 2012 22:36:48 +0100 X-Google-Sender-Auth: KrceDpBcIIqN2zylQpDGIww-Rg4 Message-ID: From: Robert Millan To: freebsd-arch@freebsd.org Content-Type: multipart/mixed; boundary=e89a8f3baf01a5d70304bad630a5 X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Subject: [PATCH] Add compatibility X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Mar 2012 21:36:50 -0000 --e89a8f3baf01a5d70304bad630a5 Content-Type: text/plain; charset=UTF-8 This patch adds a compatibility that would make it easier to build on FreeBSD software that has been written for glibc (see example1.c). The functionality in is more or less equivalent to but provides some declarations which are incompatible with those in . One of these cases is very unfortunate because it alters I/O semantics, it applies to outb(), outw() and outl(): FreeBSD code: outw(port, data); Glibc code: outw(data, port); The undefined I/O behaviour that could potentially result from this is very scary. Because of this I've written a few checks to prevent both headers from being used at the same time. Overall, aside from the portability benefit, my proposed addition has some less obvious side-effects: Desireable side-effect: Adding would break buildability of code that attempts to use both headers at the same time _WITHOUT_ changing the outw() call semantics (see example2.c). Undesireable side-effect: Adding would break buildability of code that attempts to use both headers at the same time, and was otherwise fine due to conditionalized outw() calls (see example3.c [1]). [1] I found a real case where this happens, in sane-backends-1.0.22/backend/umax_pp_low.c. In case my patch is accepted, I commit to provide a fix for sane-backends and also to adjust Debian GNU/kFreeBSD headers to follow the same route [2]. [2] This means: reenable outb(), outw() and outl() in . Currently we provide both headers, but outb(), outw() and outl() are entirely disabled. I think it's better for both projects to provide since the majority of code out there is written with GNU/Linux in mind. Attached patch is tested against HEAD with "make universe". -- Robert Millan --e89a8f3baf01a5d70304bad630a5 Content-Type: text/plain; charset=US-ASCII; name="io.diff" Content-Disposition: attachment; filename="io.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gzlqvrlg0 SW5kZXg6IHN5cy9hbWQ2NC9pbmNsdWRlL2NwdWZ1bmMuaAo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvYW1k NjQvaW5jbHVkZS9jcHVmdW5jLmgJKHJldmlzaW9uIDIzMjQwNCkKKysrIHN5cy9hbWQ2NC9pbmNs dWRlL2NwdWZ1bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsMTAgQEAKICAqIHVzZWQg aW4gcHJlZmVyZW5jZSB0byB0aGlzLgogICovCiAKKyNpZmRlZiBfU1lTX0lPX0hfCisjZXJyb3Ig ZGVmaW5pdGlvbnMgaW4gdGhpcyBmaWxlIGNvbmZsaWN0IHdpdGggdGhvc2UgaW4gc3lzL2lvLmgK KyNlbmRpZgorCiAjaWZuZGVmIF9NQUNISU5FX0NQVUZVTkNfSF8KICNkZWZpbmUJX01BQ0hJTkVf Q1BVRlVOQ19IXwogCkluZGV4OiBzeXMvaTM4Ni9pbmNsdWRlL2NwdWZ1bmMuaAo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBzeXMvaTM4Ni9pbmNsdWRlL2NwdWZ1bmMuaAkocmV2aXNpb24gMjMyNDA0KQorKysgc3lz L2kzODYvaW5jbHVkZS9jcHVmdW5jLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDEwIEBA CiAgKiB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhpcy4KICAqLwogCisjaWZkZWYgX1NZU19JT19I XworI2Vycm9yIGRlZmluaXRpb25zIGluIHRoaXMgZmlsZSBjb25mbGljdCB3aXRoIHRob3NlIGlu IHN5cy9pby5oCisjZW5kaWYKKwogI2lmbmRlZiBfTUFDSElORV9DUFVGVU5DX0hfCiAjZGVmaW5l CV9NQUNISU5FX0NQVUZVTkNfSF8KIApJbmRleDogc3lzL3N5cy9pby5oCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IHN5cy9zeXMvaW8uaAkocmV2aXNpb24gMCkKKysrIHN5cy9zeXMvaW8uaAkocmV2aXNpb24gMCkK QEAgLTAsMCArMSw1OCBAQAorLyotCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIgUm9iZXJ0IE1pbGxh bgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0 IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhP UiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJ RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhF IEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5E SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor ICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G IFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5E IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QK KyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF KSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgor ICoKKyAqICRGcmVlQlNEJAorICovCisKKy8qCisgKiBUaGlzIGZpbGUgcHJvdmlkZXMgY29tcGF0 aWJpbGl0eSBnbHVlIGZvciBjb2RlIHRoYXQgZXhwZWN0cyBHTlUtc3R5bGUKKyAqIHN5cy9pby5o LiBDb2RlIHdyaXR0ZW4gZm9yIEZyZWVCU0Qgc2hvdWxkIHVzZSBzeXMvc3lzdG0uaCBpbnN0ZWFk LgorICovCisKKyNpZmRlZiBfTUFDSElORV9DUFVGVU5DX0hfCisjZXJyb3IgZGVmaW5pdGlvbnMg aW4gdGhpcyBmaWxlIGNvbmZsaWN0IHdpdGggdGhvc2UgaW4gbWFjaGluZS9jcHVmdW5jLmgKKyNl bmRpZgorCisjaWZuZGVmIF9TWVNfSU9fSF8KKworI2lmICFkZWZpbmVkKF9faTM4Nl9fKSAmJiAh ZGVmaW5lZChfX2FtZDY0X18pCisjZXJyb3IgdGhpcyBmaWxlIGlzIG9ubHkgdXNlZnVsIG9uIGkz ODYgYW5kIGFtZDY0CisjZW5kaWYKKworI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgorCisjZGVmaW5l IG91dGIJYnNkX291dGIKKyNkZWZpbmUgb3V0dwlic2Rfb3V0dworI2RlZmluZSBvdXRsCWJzZF9v dXRsCisjaW5jbHVkZSA8bWFjaGluZS9jcHVmdW5jLmg+CisjdW5kZWYgb3V0YgorI3VuZGVmIG91 dHcKKyN1bmRlZiBvdXRsCisKKyNkZWZpbmUgb3V0YihkYXRhLHBvcnQpCQlic2Rfb3V0Yihwb3J0 LGRhdGEpCisjZGVmaW5lIG91dHcoZGF0YSxwb3J0KQkJYnNkX291dHcocG9ydCxkYXRhKQorI2Rl ZmluZSBvdXRsKGRhdGEscG9ydCkJCWJzZF9vdXRsKHBvcnQsZGF0YSkKKworI2RlZmluZSBfU1lT X0lPX0hfCisjZW5kaWYgLyogIV9TWVNfSU9fSF8gKi8K --e89a8f3baf01a5d70304bad630a5--