<feed xmlns='http://www.w3.org/2005/Atom'>
<title>teythoon/gnumach.git/kern, branch master</title>
<subtitle>Personal GNU Mach development repository</subtitle>
<id>https://darnassus.sceen.net/cgit/teythoon/gnumach.git/atom?h=master</id>
<link rel='self' href='https://darnassus.sceen.net/cgit/teythoon/gnumach.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/gnumach.git/'/>
<updated>2015-07-25T18:12:14Z</updated>
<entry>
<title>kern: add boot-time clock, use it for time stamps</title>
<updated>2015-07-25T18:12:14Z</updated>
<author>
<name>Justus Winter</name>
<email>4winter@informatik.uni-hamburg.de</email>
</author>
<published>2015-07-25T16:23:10Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/gnumach.git/commit/?id=3db15a3f80f193826e144b1944727a65c13340fe'/>
<id>urn:sha1:3db15a3f80f193826e144b1944727a65c13340fe</id>
<content type='text'>
The kernel keeps track of task and thread creation times by saving a
time stamp.  Previously, the real-time clock was used for this.  When
the real-time clock is changed, however, the reference frame for the
time stamps is lost.  This surfaced in Hurd systems reporting
spuriously long uptimes.

Fix this by creating a boot-time clock and use it as reference frame
for the time stamps.

* kern/mach_clock.c (clock_boottime_offset): Create clock by keeping
track of the offset from the real-time.
(clock_boottime_update): New function.
(record_time_stamp): Use the boot-time clock for time stamps.
(read_time_stamp): New function to convert it back to real-time.
(host_set_time): Call `clock_boottime_update'.
* kern/mach_clock.h (record_time_stamp): Amend comment.
(read_time_stamp): New declaration.
* kern/task.c (task_info): Use `read_time_stamp'.
* kern/thread.c (thread_info): Likewise.
</content>
</entry>
<entry>
<title>kern/lock: make sure the macros are only used on simple locks</title>
<updated>2015-07-25T02:09:55Z</updated>
<author>
<name>Justus Winter</name>
<email>4winter@informatik.uni-hamburg.de</email>
</author>
<published>2015-07-24T22:53:44Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/gnumach.git/commit/?id=a7fb5a40ab0700477b39bb89d70172b97280d4d1'/>
<id>urn:sha1:a7fb5a40ab0700477b39bb89d70172b97280d4d1</id>
<content type='text'>
* kern/lock.h (struct slock, simple_lock_data_empty): Add field
`is_a_simple_lock'.
(simple_lock_assert): New macro that tests for `is_a_simple_lock'.
Use this macro to assert that the arguments to various other macros
are indeed simple locks.
</content>
</entry>
<entry>
<title>kern/bootstrap: deallocate thread</title>
<updated>2015-07-20T18:23:46Z</updated>
<author>
<name>Justus Winter</name>
<email>4winter@informatik.uni-hamburg.de</email>
</author>
<published>2015-07-20T18:23:46Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/gnumach.git/commit/?id=b96414a4edc81821f84ead68cb936a6315c37a2d'/>
<id>urn:sha1:b96414a4edc81821f84ead68cb936a6315c37a2d</id>
<content type='text'>
Previously, killing the thread would fail because of the extra
reference, making task_terminate loop forever.

* kern/bootstrap.c (boot_script_exec_command): Deallocate thread.
</content>
</entry>
<entry>
<title>kern/bootstrap: deallocate task</title>
<updated>2015-07-19T16:50:29Z</updated>
<author>
<name>Justus Winter</name>
<email>4winter@informatik.uni-hamburg.de</email>
</author>
<published>2015-07-19T16:50:29Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/gnumach.git/commit/?id=890a2f6228b479fd0a0084d6f7b0d36f43f28b74'/>
<id>urn:sha1:890a2f6228b479fd0a0084d6f7b0d36f43f28b74</id>
<content type='text'>
* kern/bootstrap.c (boot_script_free_task): Deallocate task.
</content>
</entry>
<entry>
<title>kern/printf: do not serialize printf and co</title>
<updated>2015-07-18T16:57:03Z</updated>
<author>
<name>Justus Winter</name>
<email>4winter@informatik.uni-hamburg.de</email>
</author>
<published>2015-07-18T14:17:50Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/gnumach.git/commit/?id=c9e087748246622d824b5ab83ad8cc79b31014d1'/>
<id>urn:sha1:c9e087748246622d824b5ab83ad8cc79b31014d1</id>
<content type='text'>
A lot of code assumes that printf is re-entrant, e.g. the pagination
code in the debugger, or any use of assert inside the console driver.

* kern/printf.c: Drop the lock serializing calls to `_doprnt'.
(printf_init): Remove function.
* kern/printf.h (printf_init): Remove declaration.
* kern/startup.c (setup_main): Remove call to `printf_init'.
</content>
</entry>
<entry>
<title>kern/lock: use compiler built-in functions to get return address</title>
<updated>2015-07-18T16:55:52Z</updated>
<author>
<name>Justus Winter</name>
<email>4winter@informatik.uni-hamburg.de</email>
</author>
<published>2015-07-18T16:46:24Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/gnumach.git/commit/?id=1451a958347f5e683c63466cd7dfb893c1651f19'/>
<id>urn:sha1:1451a958347f5e683c63466cd7dfb893c1651f19</id>
<content type='text'>
* kern/lock.c (struct simple_locks_info): Fix type of `ra'.
(simple_lock, simple_lock_try): Use compiler built-in functions to get
return address.
</content>
</entry>
<entry>
<title>kern/bootstrap: fix locking</title>
<updated>2015-07-18T16:55:52Z</updated>
<author>
<name>Justus Winter</name>
<email>4winter@informatik.uni-hamburg.de</email>
</author>
<published>2015-07-18T16:40:47Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/gnumach.git/commit/?id=661a0a5c59714b95633a866f717d8072c67f7ac7'/>
<id>urn:sha1:661a0a5c59714b95633a866f717d8072c67f7ac7</id>
<content type='text'>
* kern/bootstrap.c (boot_script_exec_cmd): Add missing unlock.
(user_bootstrap): Likewise.
</content>
</entry>
<entry>
<title>kern/slab: fix locking</title>
<updated>2015-07-18T14:56:57Z</updated>
<author>
<name>Justus Winter</name>
<email>4winter@informatik.uni-hamburg.de</email>
</author>
<published>2015-07-18T11:33:33Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/gnumach.git/commit/?id=63e97b694c2f9eefe33d5ac84c18df0dc102759a'/>
<id>urn:sha1:63e97b694c2f9eefe33d5ac84c18df0dc102759a</id>
<content type='text'>
* kern/slab.c (host_slab_info): Fix locking.
</content>
</entry>
<entry>
<title>kern: make sure the queue macros are only used on queues</title>
<updated>2015-07-11T11:38:45Z</updated>
<author>
<name>Justus Winter</name>
<email>4winter@informatik.uni-hamburg.de</email>
</author>
<published>2015-07-11T11:27:58Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/gnumach.git/commit/?id=2ba043d04468261cc767a3b91cec6df4b2238950'/>
<id>urn:sha1:2ba043d04468261cc767a3b91cec6df4b2238950</id>
<content type='text'>
This turns mistakes as the one corrected in e59f05e9 into compile-time
errors.

* kern/queue.h: Add a new macro, queue_assert, and use it to assert
that all arguments given to the queue macros have the correct type.
* device/net_io.c (ENQUEUE_DEAD): Adapt to the fact that
`queue_next(q)' is no longer an lvalue.
</content>
</entry>
<entry>
<title>kern: make printf handle long long integers</title>
<updated>2015-07-10T20:08:18Z</updated>
<author>
<name>Justus Winter</name>
<email>4winter@informatik.uni-hamburg.de</email>
</author>
<published>2015-07-04T09:59:48Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/gnumach.git/commit/?id=78262cab3a92e09f63f5853d77db87620eac2543'/>
<id>urn:sha1:78262cab3a92e09f63f5853d77db87620eac2543</id>
<content type='text'>
* Makefile.am (clib_routines): Steal `__umoddi3'.
* kern/printf.c (MAXBUF): Increase size.
(printnum, _doprnt): Handle long long integers.
* kern/printf.h (printnum): Adjust declaration.
</content>
</entry>
</feed>
