Home | History | Annotate | Download | only in rumpkern
History log of /src/sys/rump/librump/rumpkern/rump_private.h
RevisionDateAuthorComments
 1.94  26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.93  18-Jan-2016  pooka Fix dlopen()/dlclose()+RUMP_USE_CTOR to not leave dangling pointers around.
 1.92  22-Apr-2015  pooka Apparently not all ports define struct clockframe in cpu.h, so we cannot
provide our definition that way. Instead, generate the struct clockframe
passed to hardclock() in MD code.
 1.91  18-Apr-2015  pooka Give remote clients struct pmap storage. Although the pmap is unused,
that way we can sure that the pmap macro framework doesn't access all
the wrong places.
 1.90  17-Apr-2015  pooka Give the kernel/local pmaps actual storage.

That way friendly neighborhood macros won't go scribbling
in the wrong places.
 1.89  03-Apr-2015  pooka Use RUMP_PMAP_KERNEL and RUMP_PMAP_LOCAL to denote
kernel and local client pmaps, respectively.
 1.88  03-Apr-2015  pooka Use a different vmspace for rump kernel proc0 and local clients.
While the rump kernel and local clients are by definition in the same
host vmspace, there are subtle differences in how in-kernel code works
in case accessing the kernel vmspace or a user process vmspace.

Problem discovered by riastradh's "read(fd, NULL, 1)" test.
 1.87  07-Jan-2015  pooka Move sysproxy support into a separate component, rumpkern_sysproxy,
instead of it being always provided by the rump kernel base. This
move accomplishes two things:

1) it is no longer necessary to provide sysproxy hypercall stubs for
platforms which do not want to use sysproxy
2) it is easier to reason about the security aspects, since configurations
not linking the sysproxy component simply do not support remote
system calls

discussed on rumpkernel-users
 1.86  03-Jan-2015  pooka Put all sysproxy routines to their own C module, sysproxy.c
 1.85  27-Apr-2014  pooka branches: 1.85.4;
unsprinkle const to fix clang build. mmm, travis ci
 1.84  27-Apr-2014  pooka Eliminate weak symbols from rump kernel syscall handlers, part 4:

Do not query system call handlers by using the rumpuser_dl_globalsym()
hypercall -- it will not work in environments which are not in control
of their own symbols (e.g. rumpuser-xen). Instead, provide
rump_syscall_boot_establish(), which component constructors can use
to establish their non-modular syscalls.
 1.83  23-Apr-2014  pooka Add a RUMP_USE_CTOR compile-time switch. If defined, use
__attribute__((constructor)) to determine which rump kernel components
and kernel modules are linked into the rump kernel. If not defined
(default), use the regular approach with link sets.

This option is aimed to fix problems with toolchains where using link
sets is not possible because the linker does not generate the requisite
__start/__stop symbols for the link set sections (e.g. GNU gold, OS X, ...).
 1.82  23-Apr-2014  pooka Include LIST_ENTRY() in "struct rump_component".

Main benefit: rump_component_load() can now be called from an
early-running constructor since the routine doesn't need to allocate
memory.
 1.81  09-Apr-2014  pooka implement lwp_create() and a few related interfaces.
main raison d'impalerment: the aio driver
 1.80  15-Mar-2014  pooka branches: 1.80.2;
Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.
 1.79  17-Jan-2014  pooka Use subr_cprng.c instead of stub implementation. Rijndael migrates from
rumpkern_crypto to rumpkern due to it being mandatory for cprng.
 1.78  27-Oct-2013  pooka Enable holding implicit threads over explicit scheduling points (i.e.
a kernel driver calling rump_lwproc_switch()). Also, correctly handle
curcpu()->ci_curlwp and biglock there.
 1.77  17-Sep-2013  pooka Make it possible to run component constructors after mainbus attaches,
but before config_finalize() is run.
 1.76  07-Sep-2013  pooka Add an initial console device and open fd's 0/1/2 for initproc. This is
again useful in standalone-type environments such as Xen, where all
printf/etc calls go through the rump kernel.
 1.75  03-Sep-2013  pooka Don't autogenerate the wrapper that is called from the rump kernel
local syscall entry points. The wrapper is now so big that it doesn't
get inlined (original intent for having it close to the entry points),
and autogenerating a regular function just loses in flexibility.
 1.74  10-Mar-2013  pooka branches: 1.74.6;
Don't allow kernel threads to run before all CPUs have been initialized
to avoid them getting scheduled on non-initialized CPUs.
 1.73  19-Feb-2013  martin Stopgap fix to make rump cooperate with pserialize, may be revisited later.
Patch from pooka, ok: rmind. No related regressions in a complete atf test
run (which works again with this, even on non x86 SMP machines).
 1.72  14-Jan-2013  pooka Don't use __weak_alias where the component framework is sufficient.
 1.71  09-Oct-2012  pooka Gather some statistics about biglock usage.
 1.70  21-Mar-2011  pooka branches: 1.70.4; 1.70.14;
Update copyright statements.

no functional change.
 1.69  13-Jan-2011  pooka branches: 1.69.2;
Introduce RUMP_LOCALPROC_P() macro and use it.
 1.68  11-Jan-2011  pooka Add one more component level to networking: IFCFG.
It is executed after IF and the purposes to guarantee the right
order in cross-component interface address configuration.
(e.g. lo0 is attached by net but 127.0.0.1 is configured by netinet)
 1.67  09-Jan-2011  pooka Allow multiple RUMP_COMPONENT() in one file.
 1.66  07-Jan-2011  pooka Avoid double init of tty_lock if rumpkern_tty is included. LOCKDEBUG
does not tolerate double inits.

pointed out by njoly
 1.65  01-Dec-2010  pooka Track lwp as the rumpuser mutex owner instead of pthread_t (this
is done in rumpuser for simplicity, since on the kernel side things
we assume we have only one pointer of space). As a side-effect,
we can no longer know if the current thread is holding on to a
mutex locked without curlwp context (basically all mutexes inited
outside of mutex_init()). The only thing that called rumpuser_mutex_held()
for a non-kmutex was the giant lock. So, instead implement recursive
locking for the giant lock in the rump kernel and get rid of the
now-unused recursive pthread mutex in the hypercall interface.
 1.64  21-Nov-2010  pooka Fix situation where we try to configure >MAXCPUS cpus.
 1.63  17-Nov-2010  pooka Remove unused rump_set_vmspace. An equivalent needs to come back
later, though, but in its current form it's just unusable garbage.
 1.62  17-Nov-2010  pooka cleanup some old garbage
 1.61  04-Nov-2010  pooka Refactor the sysproxy code so that rumpuser contains only the server side.
 1.60  29-Oct-2010  pooka Attach implicit threads to initproc instead of proc0. This way
applications which alter, by purpose or by accident, the uid in an
implicit thread are don't affect kernel threads.

from discussion with njoly
 1.59  27-Oct-2010  pooka Start rework of system call proxying over socket ("sysproxy").
This incarnation is written in the user namespace as opposed to
the previous one which was done in kernel namespace. Also, rump
does all the handshaking now instead of excepting an application
to come up with the user namespace socket.

There's still a lot to do, including making code "a bit" more
robust, actually running different clients in a different process
inside the kernel and splitting the client side library from librump.
I'm committing this now so that I don't lose it, plus it generally
works as long as you don't use it in unexcepted ways: i've tested
ifconfig(8), route(8), envstat(8) and sysctl(8).
 1.58  07-Sep-2010  pooka Make the Diabolical (Page)Daemon Director drain vfs buffers when
we are short of memory.

There are still some funnies left to iron out. For example, with
a certain file system / memory size configuration it's still not
possible to create enough files to make the file system run out of
inodes before the kernel runs out of memory. Also, with some other
configurations disk access slows down gargantually (though i'm sure
there are >0 buffers available). Anyway, it ~works for now and
it's by no means worse than what it was before.
 1.57  07-Sep-2010  pooka Allocate softint vectors for the final number of CPUs, not the
number currently attached. Deals with a SNAFU in my commit earlier
today which would cause softints established early to lack a
softint context on non-bootstrap CPUs.
 1.56  07-Sep-2010  pooka Attach only one CPU for the bootstrap phase.
 1.55  01-Sep-2010  pooka Implement rump_lwproc: the new lwp/proc management routines for
rump. These move the management of the pid/lwpid space from the
application into the kernel, make code more robust, and make it
possible to attach multiple lwp's to non-proc0 processes.
 1.54  14-Jun-2010  pooka Make it possible to define an upper limit for memory consumed by
the rump kernel by specifying RUMP_MEMLIMIT. In case allocation
over that limit is attempted, essentially pool reclaim and uvm_wait()
is done. The default is to allow to allocate as much as the host
will give.

XXX: uvm_km_alloc and malloc(9) do not currently conform. the
former is easy, the latter requires kern_malloc.c (rump malloc is
currently directly relegated to host malloc).
 1.53  13-Jun-2010  pooka Move FLAWLESSCALL from rump_dev_private.h into rump_private.h
so it can be used outside of devices.
 1.52  12-Jun-2010  pooka Support rumpkern components and rumpkern components depending on vfs init.
 1.51  10-Jun-2010  pooka Use kern_proc.c instead of a collection of stubs. But what we
really wanted from this commit was the support for proc_specificdata.

TODO: make creating a new process actually use kern_proc and
maybe even add an interface which starts a process with
"any pid you don't like"
 1.50  03-Jun-2010  pooka Implement a sort-of pagedaemon: adjust all memory allocators to go
through an in-rumpkernel hypermemory allocator which knows it should
kick the pagedaemon and block in case ``waitok'' memory allocation
fails.

This allows us to recover from some out-of-memory situations.
Realworld'istically speaking (as opposed to whatever "should be"
theory), these OOM situations will happen extremely rarely if ever
when our hypervisor is a regular process. Speculatively, this
should be useful for other types of hosts.

issues remaining:
* the hypervisor does not know how to reclaim kernel memory (and
for the reason I stated above, I'm not sure if it makes sense
to teach the current implementation about that)
* vfs memory (buffers, vm object pages etc.) is not reclaimed
 1.49  02-Jun-2010  pooka rumpvm_init -> uvm_init to get rid of local prototype.
no functional change
 1.48  01-Jun-2010  pooka * remove rumpvm_makepage, just use uvm_pagealloc()
* update copyright to reflect reality a little better
 1.47  31-May-2010  pooka Support mtsleep() without a biglocked sleeper (uvm uses this in
UVM_UNLOCK_AND_WAIT())
 1.46  18-May-2010  pooka Namespace rump-only kernel biglock routines appropriately.

No functional change.
 1.45  18-May-2010  pooka Make it possible to use the scheduler lock as the rumpuser condvar
interlock. This is applicable in cases where the actual interlock
is the CPU the currently running thread is scheduled on. Borrowing
the scheduler lock as the mutex mandated by pthread_cond_wait()
does away with need to have an additional mutex. This both optimizes
runtime execution and simplifies code, as the extra lock typically
lead to quite some trickeries to avoid the dungeon collapsing due
to zaps from the wand of deadlock.
 1.44  27-Apr-2010  pooka Fix multiple virtual cpu support.

... or at least on x86. CPU_INFO_FOREACH() still isn't MI, and I
don't want to support 2^n different versions.
 1.43  01-Mar-2010  pooka branches: 1.43.2;
Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.42  05-Dec-2009  pooka branches: 1.42.2;
Remove now-empty rump_sleepers_init()
 1.41  04-Dec-2009  pooka g/c unused functions (previously used by the vnode pager).
 1.40  03-Dec-2009  pooka Remove last remnants of the long-ago-properly-fixed RUMP_LMUTEX_MAGIC hack.
 1.39  03-Dec-2009  pooka Decide it's not worth the fuss to have rumpfs as a module and just
hardcode attach into rump_vfs_init(). Saves us from a lot of
pingpong init bouncing from one component to another to get the order
right.
 1.38  02-Dec-2009  uebayasi Declare global pointers as extern, otherwise they become common symbols.
Fix mips build in lib/librumpnet.
 1.37  01-Dec-2009  pooka Almost there for virtual CPU MP support:
* support bound kernel threads
* bind softint threads to specific virtual cpus
+ remove now-unnecessary locks from softint code

Now, if we only had MI CPU_INFO_FOREACH() .... (hi rmind ;)
 1.36  26-Nov-2009  pooka For rumpfs, do mountroot instead of the bunch of homegrown hacks
currently there. Still needs a little massage to get the kernel
interfaces right and avoid copypaste especially from main().

Also, move it a bit more into the direction of a real file system
(finally!) by giving it a vfsops. Most ops are still unimplemented,
though.
 1.35  09-Nov-2009  pooka Hash out soft interrupts to be a little closer to real softints:
* split them into levels
* allow only one per level to be active at a time
* fire softints only when we are unscheduling from a CPU instead
of immediately in softint_schedule(). this will later morph
into return from interrupt, but that part isn't done yet.
 1.34  16-Oct-2009  pooka Include sys_select.c for proper select()/poll() support.
 1.33  15-Oct-2009  pooka When allocating the temporary lwp we must have an lwp context. So
take turns using lwp0 for this purpose, nothing else uses it.
 1.32  15-Oct-2009  pooka Give lwp usage some much-needed love: stop treating lwp0 as the
all-sink and make sure each separate thread in rump has its own
lwp. Happy-go-lucky callers will get scheduled a temporary lwp
on entry, while true lwp connoisseurs may request a stable lwp
for their purposes. Some more love may be required later down the
road, but for now different threads will stepping on each others
toes.
 1.31  15-Oct-2009  pooka Add initial work on a rump virtual cpu scheduler. This is necessary
for kernel code which has been written to avoid MP contention by
using cpu-local storage (most prominently, select and pool_cache).

Instead of always assuming rump_cpu, the scheduler must now be run
(and unrun) on all entry points into rump. Likewise, rumpuser
unruns and re-runs the scheduler around each potentially blocking
operation. As an optimization, I modified some locking primitives
to try to get the lock without blocking before releasing the cpu.

Also, ltsleep was modified to assume that it is never called without
the biglock held and made to use the biglock as the sleep interlock.
Otherwise there is just too much drama with deadlocks. If some
kernel code wants to call ltsleep without the biglock, then, *snif*,
it's no longer supported and rump and should be modified to support
newstyle locks anyway.
 1.30  14-Oct-2009  pooka g/c some stuff which wasn't supposed to see the light of day
 1.29  14-Oct-2009  pooka Adjust rump sources for external/internal interfaces.
No functional change.
 1.28  29-Apr-2009  pooka Add proof-of-concept code for enabling system calls to rump virtual
kernels running in other processes on the same machine or on an
entirely different host. I wrote this a while ago and am now
committing it mainly to avoid losing it. It works, but could do
with a little tuning here and there.

What this will hopefully eventually buy us is the ability to use
standard userland tools to configure rump kernels, e.g. ifconfig(8)
and route(8) could be used to configure the networking stack provided
by a rump kernel. Also some distributed OS implications may apply.

fun fact: a system call which just does copyin/copyout takes >1000x
longer when made over the LAN as compared to when made on the same
machine.
 1.27  26-Apr-2009  pooka Fix getnano/microuptime to report actual uptime.
 1.26  06-Apr-2009  pooka let drivers define DPRINTF
 1.25  20-Feb-2009  pooka Add local syscall proxy as the default.
 1.24  07-Feb-2009  pooka branches: 1.24.2;
Make the clock interrupt tick based on absolute time instead of
relative time. This prevents drifting. Also, keep track of time
within userspace, so we do not have to make a syscall to get the
clock value. This is approximately 7 times cheaper, but on the
negative side is limited to the clock interrupt frequency.
 1.23  13-Jan-2009  pooka misc cleanup, mainly header polish
 1.22  13-Jan-2009  pooka Implement block I/O as a real block driver instead of a hacked copy
of specfs. That was easier years ago when rump didn't support
devices, but brings no gain now. This allows us to include the
real specfs in rump.
 1.21  02-Jan-2009  pooka Include kernel printf routines in rump instead of relying on the
magic libc symbol. This also allows to bid farewell to subr_prf2.c
and merge the contents back to subr_prf.c. The host kernel bridging
is now done via rumpuser_putchar().
 1.20  29-Dec-2008  pooka Switch i386 away from rump/include/machine. This means that rump
on i386 now uses the native kernel ABI. This in turn means that
rump modules and kernel modules are binary equivalent and can be
used interchangeably.
 1.19  29-Dec-2008  pooka Register a dummy block device for rump, since some file systems do
a sanity check to see if the block device exists. This dummy block
device should eventually replace rump specfs.
 1.18  16-Dec-2008  pooka Make rumpflushva flush only the atop info for a certain uvm object.
Better, but still not completely race-free (if two threads call
RUMP_VOP_PUTPAGES() directly for the same vm object).
 1.17  13-Dec-2008  pooka Get rid of local machine/{mutex,rwlock}.h files by treating the
object storage as a single pointer (all archs have at least one
uintptr_t in the objects).
 1.16  27-Nov-2008  pooka Remove the whole magic ubc window thingie. All file systems use
ubc_uiomove() now, so we can hook ourselves there.
 1.15  19-Nov-2008  pooka Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.14  18-Nov-2008  pooka Pass biodone() to rumpuser as a callback instead of hardcoding it.
Also, explicitly init rumpuser async io thread.
 1.13  13-Oct-2008  pooka branches: 1.13.2;
rump_enosys() is autogenerated into rump_syscalls (makes things
actually work)
 1.12  13-Oct-2008  pooka add rump_enosys()
 1.11  10-Oct-2008  pooka Support callouts and call callout_hardclock() from the timer
interrupt thread.

The sleepq implementation required for callouts is horrible, kludged
only for callouts, and generally unacceptable. It needs revisiting,
but I'm not sure yet should rump or kern_timeout be improved. It's
almost untested as of now, but committing this will give me some
maneuvering space while letting application compile.
 1.10  12-Aug-2008  pooka Make it possible to control starting of threads per env variable
instead of only at compile-time.
 1.9  29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.8  24-Jan-2008  pooka branches: 1.8.6; 1.8.10; 1.8.12; 1.8.14; 1.8.16;
Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().
 1.7  25-Dec-2007  perry Convert many of the uses of __attribute__ to equivalent
__packed, __unused and __dead macros from cdefs.h
 1.6  07-Nov-2007  pooka branches: 1.6.2; 1.6.6;
implement _kernel_lock{,_unlock}()
 1.5  06-Nov-2007  pooka Sprinkle some more locking, especially to the vm. Due to some
additional fixes, it's now possible to run file systems with
spinlocks actually enabled. The genfs_putpages() locking is still
working only due to greater powers, but I'll eventually get around to
fixing it.
 1.4  04-Nov-2007  pooka branches: 1.4.2;
* sprinkle some locking into the vm code
* avoid extra insert+search+remove step in file systems using
ubc_uiomove() instead of standard uiomove()
 1.3  31-Oct-2007  pooka branches: 1.3.2;
Make it possible to run rumps multithreaded. This brings real
locking and makes it possible to run file systems which create
threads. It also makes rump file system behaviour better match
file system behaviour in the kernel.
 1.2  01-Sep-2007  pooka branches: 1.2.2; 1.2.4; 1.2.8; 1.2.10;
* fill struct buf a little better
* hop, skip & jump to make uvm_pageratop work
 1.1  20-Aug-2007  pooka branches: 1.1.2;
add rump private parts I forgot to commit earlier today
 1.1.2.4  23-Mar-2008  matt sync with HEAD
 1.1.2.3  09-Jan-2008  matt sync with HEAD
 1.1.2.2  08-Nov-2007  matt sync with -HEAD
 1.1.2.1  06-Nov-2007  matt sync with HEAD
 1.2.10.1  13-Nov-2007  bouyer Sync with HEAD
 1.2.8.2  09-Oct-2007  ad Sync with head.
 1.2.8.1  01-Sep-2007  ad file rump_private.h was added on branch vmlocking on 2007-10-09 13:45:04 +0000
 1.2.4.5  04-Feb-2008  yamt sync with head.
 1.2.4.4  21-Jan-2008  yamt sync with head
 1.2.4.3  15-Nov-2007  yamt sync with head.
 1.2.4.2  03-Sep-2007  yamt sync with head.
 1.2.4.1  01-Sep-2007  yamt file rump_private.h was added on branch yamt-lazymbuf on 2007-09-03 14:45:35 +0000
 1.2.2.2  03-Sep-2007  skrll Sync with HEAD.
 1.2.2.1  01-Sep-2007  skrll file rump_private.h was added on branch nick-csl-alignment on 2007-09-03 10:23:56 +0000
 1.3.2.6  11-Nov-2007  joerg Sync with HEAD.
 1.3.2.5  06-Nov-2007  joerg Sync with HEAD.
 1.3.2.4  04-Nov-2007  jmcneill Sync with HEAD.
 1.3.2.3  02-Nov-2007  joerg Remove the rest of the unintentional diff in sys/rump.
 1.3.2.2  31-Oct-2007  joerg Sync with HEAD.
 1.3.2.1  31-Oct-2007  joerg file rump_private.h was added on branch jmcneill-pm on 2007-10-31 23:14:17 +0000
 1.4.2.2  18-Feb-2008  mjf Sync with HEAD.
 1.4.2.1  19-Nov-2007  mjf Sync with HEAD.
 1.6.6.1  02-Jan-2008  bouyer Sync with HEAD
 1.6.2.1  26-Dec-2007  ad Sync with head.
 1.8.16.2  13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.8.16.1  19-Oct-2008  haad Sync with HEAD.
 1.8.14.1  31-Jul-2008  simonb Sync with head.
 1.8.12.2  10-Oct-2008  skrll Sync with HEAD.
 1.8.12.1  18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.8.10.4  09-Oct-2010  yamt sync with head
 1.8.10.3  11-Aug-2010  yamt sync with head.
 1.8.10.2  11-Mar-2010  yamt sync with head
 1.8.10.1  04-May-2009  yamt sync with head.
 1.8.6.2  17-Jan-2009  mjf Sync with HEAD.
 1.8.6.1  28-Sep-2008  mjf Sync with HEAD.
 1.13.2.3  28-Apr-2009  skrll Sync with HEAD.
 1.13.2.2  03-Mar-2009  skrll Sync with HEAD.
 1.13.2.1  19-Jan-2009  skrll Sync with HEAD.
 1.24.2.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.42.2.4  06-Nov-2010  uebayasi Sync with HEAD.
 1.42.2.3  22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.42.2.2  17-Aug-2010  uebayasi Sync with HEAD.
 1.42.2.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.43.2.4  21-Apr-2011  rmind sync with head
 1.43.2.3  05-Mar-2011  rmind sync with head
 1.43.2.2  03-Jul-2010  rmind sync with head
 1.43.2.1  30-May-2010  rmind sync with head
 1.69.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.70.14.5  03-Dec-2017  jdolecek update from HEAD
 1.70.14.4  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.70.14.3  23-Jun-2013  tls resync from head
 1.70.14.2  25-Feb-2013  tls resync with head
 1.70.14.1  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.70.4.3  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.70.4.2  23-Jan-2013  yamt sync with head
 1.70.4.1  30-Oct-2012  yamt sync with head
 1.74.6.1  18-May-2014  rmind sync with head
 1.80.2.1  10-Aug-2014  tls Rebase.
 1.85.4.3  19-Mar-2016  skrll Sync with HEAD
 1.85.4.2  06-Jun-2015  skrll Sync with HEAD
 1.85.4.1  06-Apr-2015  skrll Sync with HEAD

RSS XML Feed