Subversion Repositories HelenOS-doc

Rev

Rev 81 | Rev 86 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 81 Rev 82
Line 1... Line 1...
1
<?xml version="1.0" encoding="UTF-8"?>
1
<?xml version="1.0" encoding="UTF-8"?>
2
<chapter id="sync">
2
<chapter id="sync">
3
  <?dbhtml filename="sync.html"?>
3
  <?dbhtml filename="sync.html"?>
4
 
4
 
5
  <title>Mutual exclusion and synchronization</title>
5
  <title>Synchronization</title>
6
 
6
 
7
  <section>
7
  <section>
8
    <title>Introduction</title>
8
    <title>Introduction</title>
9
 
9
 
10
    <para>The HelenOS operating system is designed to make use of the
10
    <para>The HelenOS operating system is designed to make use of the
Line 509... Line 509...
509
      win the futex to sleep until the winner wakes one of them up.</para>
509
      win the futex to sleep until the winner wakes one of them up.</para>
510
 
510
 
511
      <para>A futex should be initialized by setting its userspace counter to
511
      <para>A futex should be initialized by setting its userspace counter to
512
      one before it is used. When locking the futex via userspace library
512
      one before it is used. When locking the futex via userspace library
513
      function <code>futex_down_timeout</code>, the library code atomically
513
      function <code>futex_down_timeout</code>, the library code atomically
514
      decrements the futex counter and tests if it droped below zero. If it
514
      decrements the futex counter and tests if it dropped below zero. If it
515
      did, then the futex is locked by another thread and the library uses the
515
      did, then the futex is locked by another thread and the library uses the
516
      <constant>SYS_FUTEX_SLEEP</constant> syscall to put the thread asleep.
516
      <constant>SYS_FUTEX_SLEEP</constant> syscall to put the thread asleep.
517
      If the counter decreased to 0, then there was no contention and the
517
      If the counter decreased to 0, then there was no contention and the
518
      thread can enter the critical section protected by the futex. When the
518
      thread can enter the critical section protected by the futex. When the
519
      thread later leaves that critical section, it, using library function
519
      thread later leaves that critical section, it, using library function