summaryrefslogtreecommitdiff
path: root/open_issues/gnumach_tick.mdwn
blob: f29df6de0543fa068967d3634c64543039d0ab89 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
[[!meta copyright="Copyright © 2012, 2013 Free Software Foundation, Inc."]]

[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts.  A copy of the license
is included in the section entitled [[GNU Free Documentation
License|/fdl]]."]]"""]]

[[!tag open_issue_gnumach]]


# IRC, freenode, #hurd, 2012-07-05

    <pinotree> braunr: wrt to mach: it seems to me it ticks every 10ms or so,
      it is true?
    <braunr> yes
    <braunr> and it's not preemptible

[[microkernel/mach/gnumach/preemption]].

    <pinotree> braunr: that means a gnumach kernel currently has a maximum
      uptime of almost 500 days
    <braunr> pinotree: what do you mean ?
    <pinotree> there's an int (or uint, i don't remember) variable that keeps
      the tick count
    <braunr> yes the tick variable should probably be a 64-bits type
    <braunr> or a struct
    <braunr> but the tick count should only be used for computation on "short"
      delays
    <braunr> and it should be safe to use it even when it overflows
    <braunr> it's not the wall clock
    <pinotree> i found that when investigating why the maximum timeout for a
      mach_msg is like INT_MAX >> 2 (or 4) or something like that, also due to
      the tick count
    <braunr> iirc, in linux, they mostly use the lower 32-bits on 32-bits
      architecture, updating the 32 upper only when necessary