Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 18 Apr 2007 12:19:10 -0500
From:      "Scot Hetzel" <swhetzel@gmail.com>
To:        "Divacky Roman" <rdivacky@freebsd.org>,  "Alexander Leidinger" <Alexander@leidinger.net>
Cc:        freebsd-emulation@freebsd.org
Subject:   Re: linuxolator: implement settimeofday call on FreeBSD/amd64
Message-ID:  <790a9fff0704181019m37456143o36c82bd24f7dfe9c@mail.gmail.com>
In-Reply-To: <20061219180156.GA87609@stud.fit.vutbr.cz>
References:  <790a9fff0612190922t1f4a3fa1m44092944485297f7@mail.gmail.com> <20061219180156.GA87609@stud.fit.vutbr.cz>

next in thread | previous in thread | raw e-mail | index | archive | help
------=_Part_110272_15125915.1176916750458
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

On 12/19/06, Divacky Roman <xdivac02@stud.fit.vutbr.cz> wrote:
> On Tue, Dec 19, 2006 at 11:22:56AM -0600, Scot Hetzel wrote:
> > I noticed that the settimeofday call in the linuxolator is implemented
> > on FreeBSD/i386, but it is missing from FreeBSD/amd64.  The attached
> > patch implements the function on FreeBSD/amd64.
>
> makes me wonder... what is MD on this code? I dont see anything
>

I finally figured out what is MD for the settimeofday call.

On FreeBSD/i386:

   struct l_timeval = struct timeval

for FreeBSD/amd64

   struct l_timeval < struct timeval

The reason for this difference is tv_sec is 32 bits on i386 and 64
bits on amd64.

amd64/include/_types.h:
   typedef __int64_t       __time_t;               /* time()... */

i386/include/_types.h:
   typedef __int32_t       __time_t;               /* time()... */

sys/_types.h:
   typedef long            __suseconds_t;  /* microseconds (signed) */

sys/_timeval.h:
   typedef __time_t        time_t;
   typedef __suseconds_t   suseconds_t;    /* microseconds (signed) */

   struct timeval {
           time_t          tv_sec;         /* seconds */
           suseconds_t     tv_usec;        /* and microseconds */
   };

The reason we can't use freebsd's settimeofday call directly (as done
in the i386 linuxolator) in the linuxolator for amd64 is that the
freebsd settimeofday function uses copyin, and since the l_timeval
stuct is < timeval struct, it ends up copying the tv_usec value into
tv_sec.

Attached is the current patch to add the settimeofday call to the
linuxolator for amd64.

Scot

--
DISCLAIMER:
No electrons were mamed while sending this message. Only slightly bruised.

------=_Part_110272_15125915.1176916750458
Content-Type: text/x-diff; name=p4-amd64-settimeofday.diff; 
	charset=ANSI_X3.4-1968
Content-Transfer-Encoding: base64
X-Attachment-Id: f_f0o17zmw
Content-Disposition: attachment; filename="p4-amd64-settimeofday.diff"

ZGlmZiAtcnUgYW1kNjQvbGludXgzMi9saW51eDMyX2R1bW15LmMub3JpZyBhbWQ2NC9saW51eDMy
L2xpbnV4MzJfZHVtbXkuYwotLS0gYW1kNjQvbGludXgzMi9saW51eDMyX2R1bW15LmMub3JpZwlG
cmkgTWFyIDMwIDEwOjI1OjIzIDIwMDcKKysrIGFtZDY0L2xpbnV4MzIvbGludXgzMl9kdW1teS5j
CVNhdCBBcHIgMTQgMDI6MDY6MjIgMjAwNwpAQCAtNjMsNyArNjMsNiBAQAogRFVNTVkobWluY29y
ZSk7CiBEVU1NWShmYWR2aXNlNjQpOwogRFVNTVkocHRyYWNlKTsKLURVTU1ZKHNldHRpbWVvZmRh
eSk7CiBEVU1NWShsb29rdXBfZGNvb2tpZSk7CiBEVU1NWShlcG9sbF9jcmVhdGUpOwogRFVNTVko
ZXBvbGxfY3RsKTsKZGlmZiAtcnUgYW1kNjQvbGludXgzMi9saW51eDMyX21hY2hkZXAuYy5vcmln
IGFtZDY0L2xpbnV4MzIvbGludXgzMl9tYWNoZGVwLmMKLS0tIGFtZDY0L2xpbnV4MzIvbGludXgz
Ml9tYWNoZGVwLmMub3JpZwlXZWQgQXByICA0IDEyOjMzOjI2IDIwMDcKKysrIGFtZDY0L2xpbnV4
MzIvbGludXgzMl9tYWNoZGVwLmMJRnJpIE1hciAzMCAyMTo1NTozNCAyMDA3CkBAIC01MjYsNyAr
NTI2LDkgQEAKIAogCXRkMiA9IEZJUlNUX1RIUkVBRF9JTl9QUk9DKHAyKTsKIAotCS8qIG1ha2Ug
aXQgcnVuICovCisJLyoKKwkgKiBNYWtlIHRoaXMgcnVubmFibGUgYWZ0ZXIgd2UgYXJlIGZpbmlz
aGVkIHdpdGggaXQuCisJICovCiAJbXR4X2xvY2tfc3Bpbigmc2NoZWRfbG9jayk7CiAJVERfU0VU
X0NBTl9SVU4odGQyKTsKIAlzY2hlZF9hZGQodGQyLCBTUlFfQk9SSU5HKTsKQEAgLTU3Miw4ICs1
NzQsOCBAQAogCS8qCiAJICogWFhYOiBJbiBMaW51eCwgc2hhcmluZyBvZiBmcyBpbmZvIChjaHJv
b3QvY3dkL3VtYXNrKQogCSAqIGFuZCBvcGVuIGZpbGVzIGlzIGluZGVwZW5kYW50LiAgSW4gRnJl
ZUJTRCwgaXRzIGluIG9uZQotCSAqIHN0cnVjdHVyZSBidXQgaW4gcmVhbGl0eSBpdCBkb2VzIG5v
dCBtYWtlIGFueSBwcm9ibGVtcwotCSAqIGJlY2F1c2UgYm90aCBvZiB0aGVzZSBmbGFncyBhcmUg
c2V0IGF0IG9uY2UgdXN1YWxseS4KKwkgKiBzdHJ1Y3R1cmUgYnV0IGluIHJlYWxpdHkgaXQgZG9l
cyBub3QgY2F1c2UgYW55IHByb2JsZW1zCisJICogYmVjYXVzZSBib3RoIG9mIHRoZXNlIGZsYWdz
IGFyZSB1c3VhbGx5IHNldCB0b2dldGhlci4KIAkgKi8KIAlpZiAoIShhcmdzLT5mbGFncyAmIChM
SU5VWF9DTE9ORV9GSUxFUyB8IExJTlVYX0NMT05FX0ZTKSkpCiAJCWZmIHw9IFJGRkRHOwpAQCAt
NjYwLDE1ICs2NjIsMTUgQEAKIAlpZiAoYXJncy0+ZmxhZ3MgJiBMSU5VWF9DTE9ORV9TRVRUTFMp
IHsKIAkJc3RydWN0IHVzZXJfc2VnbWVudF9kZXNjcmlwdG9yIHNkOwogCQlzdHJ1Y3QgbF91c2Vy
X2Rlc2MgaW5mbzsKLQkgICAJaW50IGFbMl07CisJCWludCBhWzJdOwogCi0JICAgCWVycm9yID0g
Y29weWluKCh2b2lkICopdGQtPnRkX2ZyYW1lLT50Zl9yc2ksICZpbmZvLAorCQllcnJvciA9IGNv
cHlpbigodm9pZCAqKXRkLT50ZF9mcmFtZS0+dGZfcnNpLCAmaW5mbywKIAkJICAgIHNpemVvZihz
dHJ1Y3QgbF91c2VyX2Rlc2MpKTsKIAkJaWYgKGVycm9yKSB7CiAJCQlwcmludGYoTE1TRygiY29w
eWluIGZhaWxlZCEiKSk7CiAJCX0gZWxzZSB7CiAJCQkvKiBXZSBtaWdodCBjb3B5IG91dCB0aGUg
ZW50cnlfbnVtYmVyIGFzIEdVR1MzMl9TRUwuICovCi0JCSAgIAlpbmZvLmVudHJ5X251bWJlciA9
IEdVR1MzMl9TRUw7CisJCQlpbmZvLmVudHJ5X251bWJlciA9IEdVR1MzMl9TRUw7CiAJCQllcnJv
ciA9IGNvcHlvdXQoJmluZm8sICh2b2lkICopdGQtPnRkX2ZyYW1lLT50Zl9yc2ksCiAJCQkgICAg
c2l6ZW9mKHN0cnVjdCBsX3VzZXJfZGVzYykpOwogCQkJaWYgKGVycm9yKQpAQCAtODcxLDcgKzg3
Myw3IEBACiAJCSAqCiAJCSAqIE91ciBtbWFwIHdpdGggTUFQX1NUQUNLIHRha2VzIGFkZHIgYXMg
dGhlIG1heGltdW0KIAkJICogZG93bnNpemUgbGltaXQgb24gQk9TLCBhbmQgYXMgbGVuIHRoZSBt
YXggc2l6ZSBvZgotCQkgKiB0aGUgcmVnaW9uLiAgSXQgdGhlbSBtYXBzIHRoZSB0b3AgU0dST1dT
SVogYnl0ZXMsCisJCSAqIHRoZSByZWdpb24uICBJdCB0aGVuIG1hcHMgdGhlIHRvcCBTR1JPV1NJ
WiBieXRlcywKIAkJICogYW5kIGF1dG8gZ3Jvd3MgdGhlIHJlZ2lvbiBkb3duLCB1cCB0byB0aGUg
bGltaXQKIAkJICogaW4gYWRkci4KIAkJICoKQEAgLTExNzgsNiArMTE4MCwzMyBAQAogfQogCiBp
bnQKK2xpbnV4X3NldHRpbWVvZmRheShzdHJ1Y3QgdGhyZWFkICp0ZCwgc3RydWN0IGxpbnV4X3Nl
dHRpbWVvZmRheV9hcmdzICp1YXApCit7CisJbF90aW1ldmFsIHR2MzI7CisJc3RydWN0IHRpbWV2
YWwgdHYsICp0dnA7CisJc3RydWN0IHRpbWV6b25lIHR6LCAqdHpwOworCWludCBlcnJvcjsKKwor
CWlmICh1YXAtPnRwKSB7CisJCWVycm9yID0gY29weWluKHVhcC0+dHAsICZ0djMyLCBzaXplb2Yo
dHYzMikpOworCQlpZiAoZXJyb3IpCisJCQlyZXR1cm4gKGVycm9yKTsKKwkJdHYudHZfc2VjID0g
dHYzMi50dl9zZWM7CisJCXR2LnR2X3VzZWMgPSB0djMyLnR2X3VzZWM7CisJCXR2cCA9ICZ0djsK
Kwl9IGVsc2UKKwkJdHZwID0gTlVMTDsKKwlpZiAodWFwLT50enApIHsKKwkJZXJyb3IgPSBjb3B5
aW4odWFwLT50enAsICZ0eiwgc2l6ZW9mKHR6KSk7CisJCWlmIChlcnJvcikKKwkJCXJldHVybiAo
ZXJyb3IpOworCQl0enAgPSAmdHo7CisJfSBlbHNlCisJCXR6cCA9IE5VTEw7CisJcmV0dXJuIChr
ZXJuX3NldHRpbWVvZmRheSh0ZCwgdHZwLCB0enApKTsKK30KKworaW50CiBsaW51eF9nZXRydXNh
Z2Uoc3RydWN0IHRocmVhZCAqdGQsIHN0cnVjdCBsaW51eF9nZXRydXNhZ2VfYXJncyAqdWFwKQog
ewogCXN0cnVjdCBsX3J1c2FnZSBzMzI7CkBAIC0xMjQyLDcgKzEyNzEsNyBAQAogCiAjaWZkZWYg
REVCVUcKIAlpZiAobGRlYnVnKHNldF90aHJlYWRfYXJlYSkpCi0JICAgCXByaW50ZihBUkdTKHNl
dF90aHJlYWRfYXJlYSwgIiVpLCAleCwgJXgsICVpLCAlaSwgJWksICIKKwkJcHJpbnRmKEFSR1Mo
c2V0X3RocmVhZF9hcmVhLCAiJWksICV4LCAleCwgJWksICVpLCAlaSwgIgogCQkgICAgIiVpLCAl
aSwgJWkiKSwgaW5mby5lbnRyeV9udW1iZXIsIGluZm8uYmFzZV9hZGRyLAogCQkgICAgaW5mby5s
aW1pdCwgaW5mby5zZWdfMzJiaXQsIGluZm8uY29udGVudHMsCiAJCSAgICBpbmZvLnJlYWRfZXhl
Y19vbmx5LCBpbmZvLmxpbWl0X2luX3BhZ2VzLApAQCAtMTI2MSw5ICsxMjkwLDEwIEBACiAJICog
VGhlIHRsc19hcnJheVtdIGlzIHVzZWQgb25seSBpbiBbZ3NdZXRfdGhyZWFkX2FyZWEoKSBzeXNj
YWxscyBhbmQKIAkgKiBmb3IgbG9hZGluZyB0aGUgR0RUIGRlc2NyaXB0b3JzLiBXZSB1c2UganVz
dCBvbmUgR0RUIGRlc2NyaXB0b3IKIAkgKiBmb3IgVExTLCBzbyB3ZSB3aWxsIGxvYWQganVzdCBv
bmUuCi0JICogWFhYOiBUaGlzIGRvZXNudCB3b3JrIHdoZW4gdXNlci1zcGFjZSBwcm9jZXNzIHRy
aWVzIHRvIHVzZSBtb3JlCisJICoKKwkgKiBYWFg6IFRoaXMgZG9lc24ndCB3b3JrIHdoZW4gYSB1
c2VyIHNwYWNlIHByb2Nlc3MgdHJpZXMgdG8gdXNlIG1vcmUKIAkgKiB0aGFuIG9uZSBUTFMgc2Vn
bWVudC4gQ29tbWVudCBpbiB0aGUgTGludXggc291cmNlIHNheXMgd2luZSBtaWdodAotCSAqIGRv
IHRoYXQuCisJICogZG8gdGhpcy4KIAkgKi8KIAogCS8qCkBAIC0xMjg0LDggKzEzMTQsOSBAQAog
CiAJLyoKIAkgKiBXZSBoYXZlIHRvIGNvcHkgb3V0IHRoZSBHRFQgZW50cnkgd2UgdXNlLgotCSAq
IFhYWDogV2hhdCBpZiB1c2Vyc3BhY2UgcHJvZ3JhbSBkb2VzIG5vdCBjaGVjayByZXR1cm4gdmFs
dWUgYW5kCi0JICogdHJpZXMgdG8gdXNlIDYsIDcgb3IgOD8KKwkgKgorCSAqIFhYWDogV2hhdCBp
ZiBhIHVzZXIgc3BhY2UgcHJvZ3JhbSBkb2VzIG5vdCBjaGVjayB0aGUgcmV0dXJuIHZhbHVlCisJ
ICogYW5kIHRyaWVzIHRvIHVzZSA2LCA3IG9yIDg/CiAJICovCiAJZXJyb3IgPSBjb3B5b3V0KCZp
bmZvLCBhcmdzLT5kZXNjLCBzaXplb2Yoc3RydWN0IGxfdXNlcl9kZXNjKSk7CiAJaWYgKGVycm9y
KQ==
------=_Part_110272_15125915.1176916750458--



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