make life easier to Scheduler
- Go on implementing a bit more of Scheduler::step_forward()
- Remove "places" from SubRequest
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@778 3ecf2c5c-341e-0410-92b4-d18e462d057c
- Removed a bunch of FIXME from text_simulation.cc, now TextSimulation fully cooperates with Environment and History
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@774 3ecf2c5c-341e-0410-92b4-d18e462d057c
> - Completed ConcreteSimulation, i think it is all we need at the moment...
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@773 3ecf2c5c-341e-0410-92b4-d18e462d057c
- Layout of output is not tested so it will surely look odd the first time it is run...
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@757 3ecf2c5c-341e-0410-92b4-d18e462d057c
Paint a red clown nose just to show the humour of the thing, and that it
works(?).
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@755 3ecf2c5c-341e-0410-92b4-d18e462d057c
vector
- Split push_back in constructors on two lines so the compiler warns
us if returned vectors are temporary objects, or do not match the
expected type
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@745 3ecf2c5c-341e-0410-92b4-d18e462d057c
- This is not so important, but the app now segfaults because of this "improvement", don`t say it`s my fault, from what I can understand, glib crashes at some time in between the call to parse_options() is terminated and the call to start_gui() is performed
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@735 3ecf2c5c-341e-0410-92b4-d18e462d057c
- To make sure libraries are not loaded multiple times, only .so files are considered. Beware that this is not portable
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@731 3ecf2c5c-341e-0410-92b4-d18e462d057c
signals
- Remember that sigc::bind exists for passing extra parameters to
called methods/functions
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@729 3ecf2c5c-341e-0410-92b4-d18e462d057c
- Fix SWIG interface to correctly manage things
- PythonPolicyManager isn't a singleton anymore. Since I did this in
a bit of a hurry, check the modifications are right
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@725 3ecf2c5c-341e-0410-92b4-d18e462d057c
- Delete the "serialize()" method of concrete_environment, since useless
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@721 3ecf2c5c-341e-0410-92b4-d18e462d057c
- Work on step_forward() a little more
- Add extra check inside dynamic_thread()::decrease_remaining_time()
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@717 3ecf2c5c-341e-0410-92b4-d18e462d057c
from configure. This is mainly there for buggy compilers / binutils.
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@715 3ecf2c5c-341e-0410-92b4-d18e462d057c
- Commented a lot of code to make it compile-able. But still it doesn`t link (at least for me...)
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@710 3ecf2c5c-341e-0410-92b4-d18e462d057c
- Delegate plugin loading to PluginManager so that it can
be tested
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@709 3ecf2c5c-341e-0410-92b4-d18e462d057c
if they want to schedule Threads or Processes altogether
- Move setter methods for last_acquisition/last_release from
DynamicSchedulable to DynamicThread
- Rewrite aforesaid methods, along with the respective getter
methods, into Dynamic(Thread|Process)
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@708 3ecf2c5c-341e-0410-92b4-d18e462d057c
rather thant ${prefix}/include/sgpemv2: users will
be able to use directives like "#include <sgpemv2/scheduler.hh>"
in their headers, which reduces name clashes.
- Make _mutex a protected member of Singleton, so that
inheriters can recycle it :-)
- Add exclusive access control for step_forward()
- Add two states (future and exhausted) to Request
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@707 3ecf2c5c-341e-0410-92b4-d18e462d057c
- Add get_request() method to (Dynamic)SubRequest.
- Implement most of ConcreteHistory. It is a fairly complex class,
with some real evilness in it. It should be thouroughly documented
ASAP.
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@699 3ecf2c5c-341e-0410-92b4-d18e462d057c
- TODO Integrate this new plugin management system into the application
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@697 3ecf2c5c-341e-0410-92b4-d18e462d057c
- Fixed all Dynamic and Static entities lacking proper destructors:
Dynamic entities need to delete Dynamic children, Static entities
need only to delete them from the list of their siblings
- Added methods to get Static "core" from Dynamic*.
- Now get_core() is a pure virtual function into DynamicSchedulable.
A quite nice solution(?), really, if I can say that myself... ;-)
- ConcreteHistory is half-implemented. It's the other half that
worries me.
- TODO: finish off ConcreteHistory, and check that things get destroyed
properly (no leaks allowed, use valgrind).
- TODO: rework Simulation
- TODO: Scheduler rewrite
- *A side note*: this code is becoming a mess. I prefer references over
pointers, but someone other prefer pointers over references, and what
happens is that you've to continously pass from one to another when
invoking other methods... this is bad.
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@694 3ecf2c5c-341e-0410-92b4-d18e462d057c
- Fix ReadyQueue constructor
- Change DynamicSubRequest to take an int as a parameter
- Implement ConcreteEnvironment::get_request_queue() (my word, it's ugly!)
- Please note that it still doesn't compile right: ConcreteHistory
and Scheduler need to be radically changed
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@692 3ecf2c5c-341e-0410-92b4-d18e462d057c
- Add interfaces for Process and Thread into the "sgpem.i" SWIG
interface file, change DynamicSchedulable into Schedulable
- Add dynamic_cast for the return value of ReadyQueue::get_item_at()
into the pyloader "sgpem.i" SWIG interface, so that a Schedulable
can be either recognized as a Thread or a Process
- TODO: wrap STL exceptions in SWIG interface
- Please note that code won't compile until the new History and
Scheduler::step_forward() will be in place. This is a known issue.
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@689 3ecf2c5c-341e-0410-92b4-d18e462d057c
(when appropriate)
- FIXME: see if const std::vector<Something*>& let you invoke
a non-const method of *Something. Else copy these values to
const std::vector<const Something*> before returning.
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@686 3ecf2c5c-341e-0410-92b4-d18e462d057c
placeholder for the ready queue, needed by environment, and factorized
stubs for tests in a separate directory. Updated makefile including environment, concrete_environment, ready_queue, but NOT the stubs and/or the tests.
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@685 3ecf2c5c-341e-0410-92b4-d18e462d057c
- Explicitly instantiate Singleton templates to be exported from libbackend.so
- Install only header files that are backend interfaces to be exposed to the user
- Don't use full path for including templates in header files
- Instantiate a couple of smart_ptr templates to have their symbols exported outside the DSO. This happens in history.cc. FIXME: the interface for History will definitely need to be reworked, and the two smart_ptr explicit instantiations removed.
- Change SWIG exported interface to make use of Schedulable instead of (Dynamic|Static)Schedulable
- Fix provided policies to make use of the new interface
- TODO: limit the use of smart_ptrs.
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@653 3ecf2c5c-341e-0410-92b4-d18e462d057c
- Synchronized DynamicSchedulable and DynamicProcess with changes in design
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@637 3ecf2c5c-341e-0410-92b4-d18e462d057c
- Fixed a bug preventing registration of managers in PoliciesGatekeeper
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@634 3ecf2c5c-341e-0410-92b4-d18e462d057c
- Renamed SchedulableStatus to DynamicSchedulable
- Implemented almost all methods of DynamicSchedulable
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@630 3ecf2c5c-341e-0410-92b4-d18e462d057c
to the end of output
- Use GraphicalTerminalIO::read_command into GraphicalTerminalIO::onSend()
as per specs (fixes a program crash)
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@552 3ecf2c5c-341e-0410-92b4-d18e462d057c
- Put mutex and global _ret_val variable into
ScriptAdapter instead of the global space, space which is
anyway not accessible after decref'ing the corresponding
python module
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@527 3ecf2c5c-341e-0410-92b4-d18e462d057c
- Implement system to dinamically pass plugins and policies search paths to
the sgpemv2 binary and tests (class GlobalSettings)
- Drastically reduce usage of hardcoded paths in code except as
default overridable values
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@514 3ecf2c5c-341e-0410-92b4-d18e462d057c
hierarchy:
- make room for future plugins
- separate real plugins from their satellite helper
data
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@484 3ecf2c5c-341e-0410-92b4-d18e462d057c
PythonPolicy in Scheduler, but it cheerfully
segfaults python...
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@464 3ecf2c5c-341e-0410-92b4-d18e462d057c
- Adjust installation of backend header files, so users
can write their own plugins (needs to be documented)
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@459 3ecf2c5c-341e-0410-92b4-d18e462d057c
on Window$ unless you change the string "libpyloader" to
"pyloader" into main.cc)
- Fix Makefile to support module creation and loading
- 2DO:
- Add a class into backend to load and manage plugins
- Install plugins into separate directory
- Remove hardcoded paths
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@458 3ecf2c5c-341e-0410-92b4-d18e462d057c
- Re-enable FCFS sorting function
- Correct bug in PythonPolicy that wronged return value
of is_pre_emptible()
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@435 3ecf2c5c-341e-0410-92b4-d18e462d057c
of PythonPolicy when the Python user-implemented one returns
a negative value
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@430 3ecf2c5c-341e-0410-92b4-d18e462d057c
- SWIG generate interface doesn't do a mess with namespaces anymore
- Improved PythonPolicy to be acceptably faster
- FCFS implemented, sir!
- FIXME : the qsort implementation doesn't seem right
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@413 3ecf2c5c-341e-0410-92b4-d18e462d057c
- The test needs to be linked to Gtkmm, even if it doesn't use it.
This is wrong and a coding anomaly that will need to be resolved.
- Add debug code to fcfs.py. Please remove it when it'll be okay
- Calling dir(SchedulableList.get_item_at(x)) from Python shows
a worringly empty list!
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@395 3ecf2c5c-341e-0410-92b4-d18e462d057c
to ScriptAdapter.__wrap_sort_queue()). Now prints an error and check
for retval before Py_DECREF'ing it.
- Fix(?) qsort implementation in Policy
- SWIG doesn't understand "uint". Change into more verbose (but surely
standard) unsigned int
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@394 3ecf2c5c-341e-0410-92b4-d18e462d057c
- Extend test to have a set of processes (now lacks
significative output)
- Extend FCFS policy to do something useful
- FIXME : segfaults on sortQueue()
- FIXME : needs implementation for SchedulableQueue.swap()
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@389 3ecf2c5c-341e-0410-92b4-d18e462d057c
- Export swap() to SWIG
- Add sort function (just its documentation, actually, implementation will
follow) to Policy.py
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@385 3ecf2c5c-341e-0410-92b4-d18e462d057c
- Correct method names for the Python policy (design problem?)
- Compiles, but can't run it on this machine. I'll test it later
(and I expect quite a lot of SIGSEGVs).
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@382 3ecf2c5c-341e-0410-92b4-d18e462d057c
It doesn't work properly for no apparent reason.
- Add SWIG interface generation for Scheduler
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@375 3ecf2c5c-341e-0410-92b4-d18e462d057c
- added dummy_policy written in C++
- the interpreter is now finished (hopefully)
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@366 3ecf2c5c-341e-0410-92b4-d18e462d057c
loadable module. However, please note that:
- All the methods accepting a Glib::ustring should
not be exported, instead they should be replaced by wrapper
functions accepting PyObject*.
- The same thing applies to every other method accepting
a ``non built-in'' data type
- Return types should probably be wrapped, too
- It may be a good idea to implement wrapper methods
that print out the content of a C++ object,
so that a Python user can do a simple "print schedStat".
This is achieved by adding a "__str__()" method to the
class. See the SWIG manual for further infos about
returning const char* values.
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@354 3ecf2c5c-341e-0410-92b4-d18e462d057c
in order to:
- fix wrong design
- fix include paths
- fix installation of header files
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@333 3ecf2c5c-341e-0410-92b4-d18e462d057c
- Add -Wno-long-long to compiler options in order to workaround Python types' evilness
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@322 3ecf2c5c-341e-0410-92b4-d18e462d057c
- Can't compile when trying to link with Python
+ check -pedantic parameter
+ when compiling main.cc there is no -I/..../Python parameter
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@321 3ecf2c5c-341e-0410-92b4-d18e462d057c