1. 24 8月, 2014 1 次提交
    • R
      fix false ownership of stdio FILEs due to tid reuse · 5345c9b8
      Rich Felker 提交于
      this is analogous commit fffc5cda
      which fixed the corresponding issue for mutexes.
      
      the robust list can't be used here because the locks do not share a
      common layout with mutexes. at some point it may make sense to simply
      incorporate a mutex object into the FILE structure and use it, but
      that would be a much more invasive change, and it doesn't mesh well
      with the current design that uses a simpler code path for internal
      locking and pulls in the recursive-mutex-like code when the flockfile
      API is used explicitly.
      5345c9b8
  2. 02 11月, 2012 1 次提交
    • R
      fix more unused variable warnings · a617a8e2
      Rich Felker 提交于
      some of these were coming from stdio functions locking files without
      unlocking them. I believe it's useful for this to throw a warning, so
      I added a new macro that's self-documenting that the file will never
      be unlocked to avoid the warning in the few places where it's wrong.
      a617a8e2
  3. 25 10月, 2012 1 次提交
    • R
      correct locking in stdio functions that tried to be lock-free · c8cb6bcd
      Rich Felker 提交于
      these functions must behave as if they obtain the lock via flockfile
      to satisfy POSIX requirements. since another thread can provably hold
      the lock when they are called, they must wait to obtain the lock
      before they can return, even if the correct return value could be
      obtained without locking. in the case of fclose and freopen, failure
      to do so could cause correct (albeit obscure) programs to crash or
      otherwise misbehave; in the case of feof, ferror, and fwide, failure
      to obtain the lock could sometimes return incorrect results. in any
      case, having these functions proceed and return while another thread
      held the lock was wrong.
      c8cb6bcd
  4. 12 8月, 2012 1 次提交
    • R
      add bsd fgetln function · 61718273
      Rich Felker 提交于
      optimized to avoid allocation and return lines directly out of the
      stream buffer whenever possible.
      61718273
  5. 30 7月, 2011 1 次提交
    • R
      add proper fuxed-based locking for stdio · dba68bf9
      Rich Felker 提交于
      previously, stdio used spinlocks, which would be unacceptable if we
      ever add support for thread priorities, and which yielded
      pathologically bad performance if an application attempted to use
      flockfile on a key file as a major/primary locking mechanism.
      
      i had held off on making this change for fear that it would hurt
      performance in the non-threaded case, but actually support for
      recursive locking had already inflicted that cost. by having the
      internal locking functions store a flag indicating whether they need
      to perform unlocking, rather than using the actual recursive lock
      counter, i was able to combine the conditionals at unlock time,
      eliminating any additional cost, and also avoid a nasty corner case
      where a huge number of calls to ftrylockfile could cause deadlock
      later at the point of internal locking.
      
      this commit also fixes some issues with usage of pthread_self
      conflicting with __attribute__((const)) which resulted in crashes with
      some compiler versions/optimizations, mainly in flockfile prior to
      pthread_create.
      dba68bf9
  6. 02 5月, 2011 2 次提交
  7. 12 2月, 2011 1 次提交