<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/libgit2.git/src/thread-utils.h, branch cmn/read-tree-cache</title>
<subtitle>github.com: libgit2/libgit2.git
</subtitle>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/'/>
<entry>
<title>Move yield to the tests and enable for FreeBSD</title>
<updated>2014-07-03T03:55:02+00:00</updated>
<author>
<name>Carlos Martín Nieto</name>
<email>cmn@dwim.me</email>
</author>
<published>2014-07-03T03:47:34+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=905fb5929bb8aa05b640d4dcb8fa611886cbe022'/>
<id>905fb5929bb8aa05b640d4dcb8fa611886cbe022</id>
<content type='text'>
Move the definition of git_thread_yield() to the test which needs it and
add the correct definition for it for FreeBSD and derivatives.

Original patch adding FreeBSD and derivatives by @jacquesg.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Move the definition of git_thread_yield() to the test which needs it and
add the correct definition for it for FreeBSD and derivatives.

Original patch adding FreeBSD and derivatives by @jacquesg.
</pre>
</div>
</content>
</entry>
<entry>
<title>React to review feedback</title>
<updated>2014-06-07T18:40:42+00:00</updated>
<author>
<name>Philip Kelley</name>
<email>phkelley@microsoft.com</email>
</author>
<published>2014-06-07T17:56:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=1b4e29b7f68ce80bb01fd878f6ddc6cf20819581'/>
<id>1b4e29b7f68ce80bb01fd878f6ddc6cf20819581</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Win32: Fix object::cache::threadmania test on x64</title>
<updated>2014-06-07T16:51:48+00:00</updated>
<author>
<name>Philip Kelley</name>
<email>phkelley@microsoft.com</email>
</author>
<published>2014-06-07T16:51:48+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=fb5917679dd1cc0ee50d1d88893c07cbcd82471f'/>
<id>fb5917679dd1cc0ee50d1d88893c07cbcd82471f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Index locking and entry allocation changes</title>
<updated>2014-04-17T21:43:45+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2014-03-14T20:20:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=8a2834d34173220c56bd1898397c0e6d200f327d'/>
<id>8a2834d34173220c56bd1898397c0e6d200f327d</id>
<content type='text'>
This makes the lock management on the index a little bit broader,
having a number of routines hold the lock across looking up the
item to be modified and actually making the modification.  Still
not true thread safety, but more pure index modifications are now
safe which allows the simple cases (such as starting up a diff
while index modifications are underway) safe enough to get the
snapshot without hitting allocation problems.

As part of this, I simplified the allocation of index entries to
use a flex array and just put the path at the end of the index
entry.  This makes every entry self-contained and makes it a
little easier to feel sure that pointers to strings aren't
being accidentally copied and freed while other references are
still being held.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This makes the lock management on the index a little bit broader,
having a number of routines hold the lock across looking up the
item to be modified and actually making the modification.  Still
not true thread safety, but more pure index modifications are now
safe which allows the simple cases (such as starting up a diff
while index modifications are underway) safe enough to get the
snapshot without hitting allocation problems.

As part of this, I simplified the allocation of index entries to
use a flex array and just put the path at the end of the index
entry.  This makes every entry self-contained and makes it a
little easier to feel sure that pointers to strings aren't
being accidentally copied and freed while other references are
still being held.
</pre>
</div>
</content>
</entry>
<entry>
<title>Load SRWLock APIs at runtime</title>
<updated>2013-08-26T21:56:31+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2013-08-26T21:56:31+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=430953417f74dfcdbe030bafc069e1c07edceeb6'/>
<id>430953417f74dfcdbe030bafc069e1c07edceeb6</id>
<content type='text'>
This loads SRWLock APIs at runtime and in their absence (i.e. on
Windows before Vista) falls back on a regular CRITICAL_SECTION
that will not permit concurrent readers.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This loads SRWLock APIs at runtime and in their absence (i.e. on
Windows before Vista) falls back on a regular CRITICAL_SECTION
that will not permit concurrent readers.
</pre>
</div>
</content>
</entry>
<entry>
<title>Drop support for THREADSAFE on Windows XP</title>
<updated>2013-08-22T21:34:21+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2013-08-22T21:34:21+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=eb868b1e98d7cea8796f9b92be04843a7f819e5e'/>
<id>eb868b1e98d7cea8796f9b92be04843a7f819e5e</id>
<content type='text'>
This makes libgit2 require Windows Vista or newer if it is going
to be compiled with the THREADSAFE option
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This makes libgit2 require Windows Vista or newer if it is going
to be compiled with the THREADSAFE option
</pre>
</div>
</content>
</entry>
<entry>
<title>Add SRWLock implementation of rwlocks for Win32</title>
<updated>2013-08-22T21:10:56+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2013-08-22T21:10:56+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=972bb689c4a69ba5a5dfaeebacc7198622c4f051'/>
<id>972bb689c4a69ba5a5dfaeebacc7198622c4f051</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Convert sortedcache to use rwlock</title>
<updated>2013-08-22T18:40:53+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2013-08-22T18:40:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=8d9a85d43aa6ed7a9fb15a2ac9e0f9ba1c33461e'/>
<id>8d9a85d43aa6ed7a9fb15a2ac9e0f9ba1c33461e</id>
<content type='text'>
This is the first use we have of pthread_rwlock_t in libgit2.
Hopefully it won't cause any serious portability problems.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is the first use we have of pthread_rwlock_t in libgit2.
Hopefully it won't cause any serious portability problems.
</pre>
</div>
</content>
</entry>
<entry>
<title>Update git__swap thread helper</title>
<updated>2013-07-11T18:00:41+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2013-07-11T18:00:41+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=814de0bcab99f82dc637ba7ae34df5a0e9e1138c'/>
<id>814de0bcab99f82dc637ba7ae34df5a0e9e1138c</id>
<content type='text'>
This makes git__swap use the __sync_lock_test_and_set primitive
with GCC and the InterlockedExchangePointer primitive with MSVC.
Previously is used compare_and_swap in a way that was probably
unintuitive for most thinking (i.e. it could fail to swap in the
value if another thread raced in).  Now it will always succeed
and the last thread to run in a race will win instead of the
first thread.

This also fixes up a little confusion between volatile void **
and void * volatile * that came up with the Win32 compiler.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This makes git__swap use the __sync_lock_test_and_set primitive
with GCC and the InterlockedExchangePointer primitive with MSVC.
Previously is used compare_and_swap in a way that was probably
unintuitive for most thinking (i.e. it could fail to swap in the
value if another thread raced in).  Now it will always succeed
and the last thread to run in a race will win instead of the
first thread.

This also fixes up a little confusion between volatile void **
and void * volatile * that came up with the Win32 compiler.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add accessors for refcount value</title>
<updated>2013-07-10T19:14:13+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2013-06-29T19:41:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=302a04b09ca706eeda9b8cceb50694f37973e348'/>
<id>302a04b09ca706eeda9b8cceb50694f37973e348</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
