14 years agocvs->git update
Andre [Tue, 21 Feb 2006 17:38:02 +0000 (18:38 +0100)]
cvs->git update

14 years agoAvoid busy loop if someone nasty removes the semaphores currently in use.
Andre [Tue, 21 Feb 2006 17:04:43 +0000 (18:04 +0100)]
Avoid busy loop if someone nasty removes the semaphores currently in use.

Just die if semop failed 500 times.

14 years agochange version.
Andre [Tue, 21 Feb 2006 16:52:23 +0000 (17:52 +0100)]
change version.

The shiny new git tree was still called "cvs".

14 years agomention plm and update the mysql description.
Andre [Tue, 21 Feb 2006 16:48:54 +0000 (17:48 +0100)]
mention plm and update the mysql description.

Also, selector is now the prefered word, rather than dbtool.

14 years agouse the random dbtool as default
Andre [Tue, 21 Feb 2006 16:07:56 +0000 (17:07 +0100)]
use the random dbtool as default

That simplifies the code quite a bit.

14 years agomake para_server use the new ipc subsystem
Andre [Tue, 21 Feb 2006 15:42:12 +0000 (16:42 +0100)]
make para_server use the new ipc subsystem

Straight-forward conversion.

This BTW gets rid of the ancient /dev/zero hack which worked pretty
well for all the years but is not general enough for the plm dbtool.

Another 42 also disappeared ;)

14 years agofix the plm database tool
Andre [Tue, 21 Feb 2006 14:52:45 +0000 (15:52 +0100)]
fix the plm database tool

(Re)loading the playlist uses the new mutex and
shm helpers and is hopefully a race-free implementation.

It works as follows:

The plm init function (parent, server context) reserves
a shared memory area (client data) as well as two unlocked
mutexes. The first mutex serializes access for racing clients
that want to replace the playlist. The second mutex serializes
the access between parent and child (com_lpl()).

com_lpl() loads the playlist from the client into a tmp buffer.
It then creates a shm area (client_shm) and copies that buffer
to the area.  Further, another mutex (shm) is created. This
mutex is initially locked.

Next, it grabs the client lock and the server lock, and updates
client_data with the id of client_shm. Then the parent is
woken up (SIGUSR1) and the server lock is released. com_lpl()
finally goes to sleep by acquiring the shm lock.

In this situation, only the parent may run. It grabs the
server lock, reads client_data to attach client_shm and
reloads the playlist with data from client_shm. When ready,
the parent detaches client_shm, and drops the shm lock and
the server lock.

This wakes up com_lpl() which destroys client_shm, the
shm mutex and the tmp buffer.

14 years agoMerge branch 'dbtool_preselect'
Andre [Tue, 21 Feb 2006 08:22:36 +0000 (09:22 +0100)]
Merge branch 'dbtool_preselect'

14 years agoMerge branch 'ipc'
Andre [Tue, 21 Feb 2006 08:20:30 +0000 (09:20 +0100)]
Merge branch 'ipc'


Fix these conflicts.

14 years agoadd dbtool hooks
Andre [Tue, 21 Feb 2006 08:09:36 +0000 (09:09 +0100)]
add dbtool hooks

pre_select/post_select. Also, add a private_dbtool pointer for
each audio format to mmd.

14 years agoThe new ipc subsystem
Andre [Tue, 21 Feb 2006 07:12:46 +0000 (08:12 +0100)]
The new ipc subsystem

Contains functions for dealing with mutexes and shared memory.

14 years agothe new plm database tool
Andre [Tue, 21 Feb 2006 06:06:17 +0000 (07:06 +0100)]
the new plm database tool

does not work yet as the ipc problems are not solved.

14 years agorename dopey to random
Andre [Mon, 20 Feb 2006 06:25:59 +0000 (07:25 +0100)]
rename dopey to random

It isn't so dopey anymore and the upcoming plm database tool
won't be much smarter, so..

14 years agoinitial git commit
Andre [Mon, 20 Feb 2006 06:03:36 +0000 (07:03 +0100)]
initial git commit

Let's try if this works out.