<feed xmlns='http://www.w3.org/2005/Atom'>
<title>libtf, branch master</title>
<subtitle>Threadable Fibers, a user-space cooperative threading library
</subtitle>
<link rel='alternate' type='text/html' href='https://git-old.alpinelinux.org/hosted/libtf/'/>
<entry>
<title>libtf: major redesign started</title>
<updated>2010-07-02T17:25:47+00:00</updated>
<author>
<name>Timo Teräs</name>
<email>timo.teras@iki.fi</email>
</author>
<published>2010-07-02T17:23:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git-old.alpinelinux.org/hosted/libtf/commit/?id=23b95bf1a15322c2f471b80c06cb65d9b2d2a282'/>
<id>23b95bf1a15322c2f471b80c06cb65d9b2d2a282</id>
<content type='text'>
the idea is to make libtf completely multi-threaded. meaning each
fiber can be running concurrently in separate thread. quite a bit
of framework is added for this and some atomic helpers are already
introduced. however, io polling is busy polling now (will be soon
in own thread) and timeouts are still more or less broken. oh, and
the multithreading core is not there yet. basically we are currently
mostly broken ;)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
the idea is to make libtf completely multi-threaded. meaning each
fiber can be running concurrently in separate thread. quite a bit
of framework is added for this and some atomic helpers are already
introduced. however, io polling is busy polling now (will be soon
in own thread) and timeouts are still more or less broken. oh, and
the multithreading core is not there yet. basically we are currently
mostly broken ;)
</pre>
</div>
</content>
</entry>
<entry>
<title>mem: add mmap allocator</title>
<updated>2010-03-10T18:11:06+00:00</updated>
<author>
<name>Timo Teras</name>
<email>timo.teras@iki.fi</email>
</author>
<published>2010-03-10T18:11:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git-old.alpinelinux.org/hosted/libtf/commit/?id=0183e33d9a4759764716e771b85e19f7a997b8bd'/>
<id>0183e33d9a4759764716e771b85e19f7a997b8bd</id>
<content type='text'>
use it for heaps and fiber stacks.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
use it for heaps and fiber stacks.
</pre>
</div>
</content>
</entry>
<entry>
<title>io: virtualize polling api</title>
<updated>2010-03-10T17:04:26+00:00</updated>
<author>
<name>Timo Teras</name>
<email>timo.teras@iki.fi</email>
</author>
<published>2010-03-10T17:04:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git-old.alpinelinux.org/hosted/libtf/commit/?id=dc34e87746f69994aad893b39ee4cd3dda6e2f7b'/>
<id>dc34e87746f69994aad893b39ee4cd3dda6e2f7b</id>
<content type='text'>
so we can in future have more polling frameworks than epoll.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
so we can in future have more polling frameworks than epoll.
</pre>
</div>
</content>
</entry>
<entry>
<title>libtf: fix stack frame creation and valgrind issues</title>
<updated>2010-03-10T16:12:02+00:00</updated>
<author>
<name>Timo Teras</name>
<email>timo.teras@iki.fi</email>
</author>
<published>2010-03-10T16:12:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git-old.alpinelinux.org/hosted/libtf/commit/?id=674f1495ab082c8f5a604cbb5a4dadc95b8c7ebb'/>
<id>674f1495ab082c8f5a604cbb5a4dadc95b8c7ebb</id>
<content type='text'>
debugging looks now better. there was also some valgrind issues
that needed attention.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
debugging looks now better. there was also some valgrind issues
that needed attention.
</pre>
</div>
</content>
</entry>
<entry>
<title>libtf: separate scheduler fibre, change the core api</title>
<updated>2010-03-10T11:58:39+00:00</updated>
<author>
<name>Timo Teras</name>
<email>timo.teras@iki.fi</email>
</author>
<published>2010-03-10T11:58:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git-old.alpinelinux.org/hosted/libtf/commit/?id=5ef38570315dc68d7ddf8d9475d9a8830528e8a4'/>
<id>5ef38570315dc68d7ddf8d9475d9a8830528e8a4</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>build: add os/arch detection</title>
<updated>2010-03-09T11:17:14+00:00</updated>
<author>
<name>Timo Teras</name>
<email>timo.teras@iki.fi</email>
</author>
<published>2010-03-09T11:17:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git-old.alpinelinux.org/hosted/libtf/commit/?id=43e69b26126b8708b70680c6b4806eb3844386ab'/>
<id>43e69b26126b8708b70680c6b4806eb3844386ab</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>build: rename {pro,epi}logue to enter/leave</title>
<updated>2010-03-09T10:53:22+00:00</updated>
<author>
<name>Timo Teras</name>
<email>timo.teras@iki.fi</email>
</author>
<published>2010-03-09T10:46:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git-old.alpinelinux.org/hosted/libtf/commit/?id=49f49db8c26b2ac4bf59212582c823b16163f153'/>
<id>49f49db8c26b2ac4bf59212582c823b16163f153</id>
<content type='text'>
it's less confusing this way.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
it's less confusing this way.
</pre>
</div>
</content>
</entry>
<entry>
<title>libtf: optimize x86 fiber switching</title>
<updated>2009-12-01T11:55:43+00:00</updated>
<author>
<name>Timo Teras</name>
<email>timo.teras@iki.fi</email>
</author>
<published>2009-12-01T11:55:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git-old.alpinelinux.org/hosted/libtf/commit/?id=ffe17e686d99efc672b31e6876dcc4e30a05a572'/>
<id>ffe17e686d99efc672b31e6876dcc4e30a05a572</id>
<content type='text'>
by letting gcc figure out better how to represent stack pointers.
also uses labels to make the code more readable.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
by letting gcc figure out better how to represent stack pointers.
also uses labels to make the code more readable.
</pre>
</div>
</content>
</entry>
<entry>
<title>libtf: implement x86 assembly fiber switching</title>
<updated>2009-11-27T16:42:11+00:00</updated>
<author>
<name>Timo Teras</name>
<email>timo.teras@iki.fi</email>
</author>
<published>2009-11-27T16:42:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git-old.alpinelinux.org/hosted/libtf/commit/?id=959645020619f02d6ab8bb4026b0e0121b3971da'/>
<id>959645020619f02d6ab8bb4026b0e0121b3971da</id>
<content type='text'>
it's faster and has smaller context in the beginning of the
fiber. it's also required since setjmp() seems to use mangled
pointers in glibc so we could not schedule fibers in non-creation
threads. additionally the setjmp() setup code has a race condition.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
it's faster and has smaller context in the beginning of the
fiber. it's also required since setjmp() seems to use mangled
pointers in glibc so we could not schedule fibers in non-creation
threads. additionally the setjmp() setup code has a race condition.
</pre>
</div>
</content>
</entry>
<entry>
<title>libtf: stackable timeouts</title>
<updated>2009-11-26T07:37:24+00:00</updated>
<author>
<name>Timo Teras</name>
<email>timo.teras@iki.fi</email>
</author>
<published>2009-11-26T07:35:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git-old.alpinelinux.org/hosted/libtf/commit/?id=aa530f352b0410150bfe94c821ae32c1378b9d02'/>
<id>aa530f352b0410150bfe94c821ae32c1378b9d02</id>
<content type='text'>
instead of having per-function argument, use a push/pop mechanism:
- multiple timers inside fiber use only one heap entry
- easy to chain multiple possibly blocking operations inside one
  timeout block
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
instead of having per-function argument, use a push/pop mechanism:
- multiple timers inside fiber use only one heap entry
- easy to chain multiple possibly blocking operations inside one
  timeout block
</pre>
</div>
</content>
</entry>
</feed>
