Commit graph

302 commits

Author SHA1 Message Date
5b9aa5deb2 landing the new threadpool implementation 2010-02-15 00:48:52 +01:00
1c63a02e23 augment and round up the C++ thread wrapper 2010-02-14 23:39:15 +01:00
90d311dc1d Error integration: error::Flag as subclass of State. Wrapped throw 2010-02-13 20:56:41 +01:00
dfd70c6069 replace GThreads by the Lumiera thread wrapper 2010-02-11 03:06:42 +01:00
Christian Thaeter
80e2db4800 hook the resourcecollector into safeclib on backend startup 2010-02-08 17:47:26 +01:00
Christian Thaeter
d103346482 hook mpool into the resourcecollector and using safeclib allocations 2010-02-08 14:28:54 +01:00
Christian Thaeter
33a0591689 Make resourcecollector initialization explicit
instead automatic initialization, the resourcecollector is pulled up as
backend service.
2010-02-05 09:20:52 +01:00
Christian Thaeter
d350a250fa Move the resourcecollector to the backend, closes #521 2010-02-05 08:58:19 +01:00
Christian Thaeter
d45b2eef91 factor the filedescriptorregistry out, closes #395
also introduces a new mutex for lookup/creating files to prevent races
2010-02-04 22:52:21 +01:00
Christian Thaeter
40d1bb50bb fix double-free bug in mmap.c 2010-02-04 21:56:49 +01:00
Christian Thaeter
97d5b1c727 remove the 'once' hack from mmap_init() 2010-02-04 20:43:27 +01:00
Christian Thaeter
c1c97228a5 Set error condition when chunksize for a non mmaped file is queried 2010-02-04 20:41:49 +01:00
Christian Thaeter
4821e7eb3f add file_delete_unlink() which removes a file from disk when closed
For temporary file, only removes the name under which it was opened
2010-02-04 20:40:54 +01:00
Christian Thaeter
31a2f454d8 remove lumiera_fhcache as parameter, closes #396 2010-02-04 10:21:20 +01:00
Christian Thaeter
711af29605 Merge remote branch 'plouj/second-tp-attempt' into backend_devel
* plouj/second-tp-attempt:
  added two sync tests
  show the state name string
  it is more proper to use cond_sync flags for *CONDITION_SECTIONs
  add a threads/threadpool NOBUG flag hierarchy
  replace an old test with a compile-only one which spawns way too many threads
  increase the delay in threads to 10ms
  wrap prime test in usleep() to make the thread likely to be re-scheduled
2010-02-03 10:51:03 +01:00
Michael Ploujnikov
6d053d3f84 show the state name string 2010-02-01 16:51:27 -05:00
Michael Ploujnikov
8588fa2b9c it is more proper to use cond_sync flags for *CONDITION_SECTIONs 2010-02-01 07:25:49 -05:00
Michael Ploujnikov
b799321dff add a threads/threadpool NOBUG flag hierarchy
and remove redundant/errorneous flag initializations as a result
also use the test flag from logging.h
2010-02-01 07:25:06 -05:00
Christian Thaeter
32d9a9f9ad FIX: thread-wrapper proxy the catched error up to the joiner 2010-01-30 07:20:09 +01:00
Christian Thaeter
dc5ae73626 Log the error passing when joining threads 2010-01-30 07:20:09 +01:00
Christian Thaeter
812f7112af FIX: small race in acquire_thread, catching threads out of the void 2010-01-30 02:56:50 +01:00
Christian Thaeter
f57d637b59 Merge commit 'dc87e78590ea86615d3ebe90d23af4548445b941' into backend_devel
* commit 'dc87e78590ea86615d3ebe90d23af4548445b941':
  add a two-thread acquire test
  show the state of the thread in question
  minor fixes: remove an old comment and change another
  fix the prime test algorithm
  use unsigned long for even more digits!
2010-01-30 00:48:04 +01:00
ede06e63d5 automatically start the threadpool on demand, similar to NoBug
but the difference is: threadpool comes up application init i.e. at the begin of main(),
while NoBug comes up in static init already.
2010-01-24 15:48:48 +01:00
93af4ed017 refactor the C++ thread-wrapper, remove JoinHandle 2010-01-24 14:05:32 +01:00
Christian Thaeter
8607a4006a update the thread-wrapper to use the new threading API
This removes the explicit Sync things from the thread wraper since
the functionality is almost exactly provided by the backend.

Thread encapsulates a lumiera thread handle now, but this is strictly
optional and might be dropped on the floor (using a temporary as thread).

Thread has a sync() function which allows user controlled syncronous
startup:

 Thread("foo", myoperation).sync();

will startup myoperation and only return from the ctor after myoperation
called a matching lumiera_thread_sync().

The related tests need to initialize/destroy the threadpool accordingly
2010-01-23 06:57:14 +01:00
Christian Thaeter
9fc68c9d32 Merge remote branch 'public/nobug201001.2' into backend_devel
* public/nobug201001.2:
  integrating nobug context passing
  updates for nobug 201001.2

Conflicts:
	configure.ac
	src/lib/condition.h
	src/lib/reccondition.h
	tests/backend/test-threads.c
2010-01-23 06:56:39 +01:00
Christian Thaeter
c15f2247d7 integrating nobug context passing
Somewhat more intrusive than the previous patch,
adds contexts everywhere except for sync.hpp where only default ctors
are used.
2010-01-23 01:40:27 +01:00
Michael Ploujnikov
fc15a2ac2c Merge commit '6f07e4eedc6b624b1f9ae1004ad3e6a77027e028' into second-tp-attempt
Conflicts:
	src/backend/threads.c
2010-01-20 21:41:14 -05:00
Michael Ploujnikov
a22bb5e54f show the state of the thread in question 2010-01-20 17:09:37 -05:00
Michael Ploujnikov
571c265ccd minor fixes: remove an old comment and change another 2010-01-20 07:58:22 -05:00
Christian Thaeter
751a8b415c few trace points 2010-01-20 01:04:35 +01:00
Christian Thaeter
6f07e4eedc one more signal/wait for syncing 2010-01-20 01:04:12 +01:00
Christian Thaeter
95fed7fd0e remove thread counters (for now)
counting the threads had a race when creating threads, with moving
threads only between idle and working list we don't need the counters for
operation anyways. Maybe later when we find out that we need them we can
re-add them in a sane way
2010-01-20 01:03:41 +01:00
Christian Thaeter
12968bb784 thread kind and flag handling
* 256 states are enough for anyone (else fix the source)
 * add proper masking and handling of flags
2010-01-20 00:43:11 +01:00
Christian Thaeter
32217debe8 Fix threadloop
* joining must be done inside the loop, doh
 * a thread must release itself first in the loop, new threads
   have to go idle when created
2010-01-20 00:33:08 +01:00
Christian Thaeter
995d813709 add threadpool init/destroy to the global backend init/destroy 2010-01-19 18:46:02 +01:00
Christian Thaeter
66a0e6e0ca Experiment: remove custom states, syncs are 2-thread barriers 2010-01-18 19:58:31 +01:00
Christian Thaeter
e2c5aceec4 FIX: off by one error in time normalization
"The value of the nanoseconds field must be in the range 0 to 999999999."
2010-01-18 18:45:02 +01:00
Christian Thaeter
020908d623 Make threadpool_destroy wait until all threads are finished
adds a state to each threadpool which can be only offline or online.
One can not acquire new threads when the pool is offline.

no need for waits in the teststuite anymore.
2010-01-18 17:53:33 +01:00
Christian Thaeter
7371db8a2c thread deadlines, first implementation 2010-01-18 16:24:45 +01:00
Christian Thaeter
cc4dc25f4a while loop is little more solid than do..while 2010-01-18 16:23:28 +01:00
Christian Thaeter
e55e648f29 Thread syncronization and joining
add a custom defined range for states
provide functions for barrier like syncing between 2 threads
provide joinable threads and a thread_join() function
2010-01-18 00:34:53 +01:00
Christian Thaeter
72d9cbe91c Merge remote branch 'plouj/second-tp-attempt' into backend_devel
* plouj/second-tp-attempt: (68 commits)
  partially fix a pkg-config problem with scons on Fedora12
  fix comilation by using an existing TEST macro
  more formatting fixes to put spaces before function/macro call opening brackets
  add a stronger REQUIRE check
  ignore RESOURCE_ANNOUNCE in tests
  fix the code by re-merging some of cehteh's changes
  remove redundant info from TRACE
  match the filename in the header comment
  add a thread state check and remove an old comment
  python-2.6 fix: loading the icon_rener.py script (Ticket #222)
  Use a fully qualified name for PlacementMO in PlacementIndex
  fix compilation errors
  die regardless of what type of failure pthread_create() encounters
  mark thread as worker
  remote unnecessary calls to llist_unlink() insert is enough
  continuation of working_list introduction
  begin adding a second list to store working threads
  merge ECHO with TRACE
  don't expect any more output from the basic test
  fix compilation
  ...

Conflicts:
	src/tool/Makefile.am
	tests/Makefile.am
2010-01-17 17:32:43 +01:00
Christian Thaeter
b8336879f7 autoconf/automake cleanup
* refactor configure.ac to have distinct sections to configure each
   subsystem.
 * Dedicated LUMIERA_<subsys>_CFLAGS|_LIBS vars
 * Fix Makefile.am's to use them, remove unnecessary dependencies

Stray dependencies to be refacored:
 * tests/Makefile.am has dependencies on proc and backend
  - should be moved to tests/library/Makefile.am etc anyways
 * tests/lib/Makefile.am has dependency on GUI left


 * src/tool/Makefile.am links GUI stuff generally, thats ok

 * one threading test is broken, we don't care, merging new threadpool in
   next.
2010-01-17 15:48:30 +01:00
Michael Ploujnikov
c78571be55 more formatting fixes to put spaces before function/macro call opening brackets 2010-01-16 13:53:42 -05:00
Michael Ploujnikov
fa85a01818 add a stronger REQUIRE check 2010-01-16 13:13:02 -05:00
Michael Ploujnikov
02c9ee33c7 fix the code by re-merging some of cehteh's changes
test still fails
2010-01-16 11:48:48 -05:00
Michael Ploujnikov
e60c10a01d remove redundant info from TRACE
and add spaces for formatting
2010-01-16 10:39:45 -05:00
Michael Ploujnikov
e9ae8c8601 add a thread state check and remove an old comment 2010-01-15 07:35:28 -05:00
Michael Ploujnikov
9d4494aa90 Merge branch 'master' into second-tp-attempt 2010-01-14 19:32:07 -05:00