1. 21 Oct, 2008 3 commits
    • Jeremy Kerr's avatar
      powerpc/spufs: Use state_mutex for switch_log locking, and prevent multiple openers · f5ed0eb6
      Jeremy Kerr authored
      Currently, we use ctx->mapping_lock and ctx->switch_log->lock for the
      context switch log. The mapping lock only prevents concurrent open()s,
      so we require the switch_lock->lock for reads.
      
      Since writes to the switch log buffer occur on context switches, we're
      better off synchronising with the state_mutex, which is held during a
      switch. Since we're serialised througout the buffer reads and writes,
      we can use the state mutex to protect open and release too, and
      can now kfree() the log buffer on release. This allows us to perform
      the switch log notify without taking any extra locks.
      
      Because the buffer is only present while the file is open, we can use
      it to prevent multiple simultaneous openers.
      Signed-off-by: default avatarJeremy Kerr <jk@ozlabs.org>
      f5ed0eb6
    • Jeremy Kerr's avatar
      powerpc/spufs: sputrace: Don't block until the read buffer is full · e869446b
      Jeremy Kerr authored
      Currently, read() on the sputrace buffer will only return data when
      the user buffer is exhausted. This may mean that we never see the
      end of the event log, unless we read() with exactly the right-sized
      buffer.
      
      This change makes sputrace_read not block if we have data ready to
      return.
      Signed-off-by: default avatarJeremy Kerr <jk@ozlabs.org>
      e869446b
    • Jeremy Kerr's avatar
      powerpc/spufs: sputrace: Only enable logging on open(), prevent multiple openers · baf39927
      Jeremy Kerr authored
      Currently, sputrace will start logging to the event buffer before the
      log buffer has been open()ed. This results in a heap of "lost samples"
      warnings if the sputrace file hasn't yet been opened.
      
      Since the buffer is reset on open() anyway, there's no need to enable
      logging when no-one has opened the log.
      
      Because open clears the log, make it return EBUSY for mutliple open
      calls.
      Signed-off-by: default avatarJeremy Kerr <jk@ozlabs.org>
      baf39927
  2. 15 Oct, 2008 23 commits
  3. 14 Oct, 2008 14 commits