Michal Sojka [Tue, 19 May 2009 11:53:03 +0000 (13:53 +0200)]
Aquosa is initialized only when it is really needed
Now, the framework can bi compiled with Aquosa supoprt, but test not
requring aquosa can run without aquosa kernel. Aquosa is initialized
just before the first contract for CPU is negotiated.
Dario Faggioli [Wed, 13 May 2009 09:58:22 +0000 (11:58 +0200)]
Added speed reading functions.
frsh_resource_get_speed() function (and their implementations for CPU and
LCD) are added by this commit.
They can be used to retreive the ratio between the speed of a power level
and the maximum achievable speed for that resource.
Michal Sojka [Wed, 13 May 2009 00:15:44 +0000 (02:15 +0200)]
Added test for spare capacity
Currently, the test only tests conversion of SC blocks to strings. The
functionality is almost the same as in negotiation.c The implementation
of spare capacity redistribution is still not finished, so that it
doesn't test that the spare capacity is redistributed correctly.
Dario Faggioli [Tue, 12 May 2009 08:07:49 +0000 (10:07 +0200)]
Fix (again) AQuoSA compilation.
This should --definitely-- fix all the still open issues with
compiling the framework while having AQuoSA installed in non-standard
(i.e., non /usr or /usr/local) path.
Michal Sojka [Sun, 10 May 2009 09:47:25 +0000 (11:47 +0200)]
Added fra_get()
This functions might be used later by frsh_resource_(set|get)_power_level()
to implement this functionality by virtual functions.
In my opinion, set/get_poer_level functions should not be part of FRSH API.
It is not clear (to me) what happens when one application set one
power-level and second application different level. I think this function
should only be used internally (e.g. by contract broker) to achieve the
requirements specified by frsh_contract_set_min_expiration() and similar
functions.
Michal Sojka [Sun, 10 May 2009 09:42:51 +0000 (11:42 +0200)]
Additional FRA functionality implemented by virtual functions
The new virtual functions are:
- (un)bind_thread
- vres_get_XXX_usage
- support for feedback module
In d9964709b8f6fe7ebf97535daaf1a3c52f519f89, these functions were called
from switch statements in FRSH API and it was not possible to compile the
framework without DISK support (there were missing #ifdefs).
Dario [Sat, 9 May 2009 17:04:27 +0000 (19:04 +0200)]
Large commit with power management related fixes and features.
This is a very (too much, probably!) large commit including:
- redesigned per-resource power management logic;
- test cases for battery status reading;
- test case for CPU and LCD power management;
- full implementation of battery related functions and of
their implications for core and contract functions;
- bugfixes in existent power managemtnt code
Dario [Sat, 9 May 2009 15:14:29 +0000 (17:14 +0200)]
Fixed AQuoSA CPU resource management.
AQuoSA based CPU manager implementation was affected by quite
serious bugs, mainly with respect to vres modification (during)
renegotiation and removal (during cancellation).
Dario [Tue, 5 May 2009 15:33:44 +0000 (17:33 +0200)]
Added minimum contract duration.
As prescribed by the energy management module, it is now possible to ask
a contract to be negotiated only if the system lifetime is greater than
a certain value, specified by means of the energy management API.
Dario [Mon, 4 May 2009 13:49:25 +0000 (15:49 +0200)]
Fix critical bugs in FRSH Feedback module.
Some critical bugs was present in the feedback module implementation.
First of all, the module was not being compiled, thus a lot of comilation
error were in place, and anybody has never noticed them.
Also, the name of the spare bandwidth setting functions (for CPU and DISK)
were totally wrong.
Finally, the registration of the spare capacity block was not being performed.
This quite disruptive commit the support for multiple
resources is introduced into the FRSH-FORB architecture.
For now, only CPU and DISK resources are supported, but, as usual,
the framework is flexible enough to make the adding of new resources
as easy as possible.
Unfortunately, we have not been able (yet), mainly for time reasons,
to go with the framework's usual ORB and virtual function based approach,
and some switch/case logic has been added in FRSH API implementation. :-(
We think this approach could anyway be valuable, at least for now...
Refinements and more "clean" solutions may come in the future, and any
kind of suggestion is welcome with this respect.
Added VRES type to the key of thread/VRES repository.
Since more than one single resource type has to be supported, it
came out that using only the thread-ID as the key of the trhead/VRES
repository (i.e., where the mapping between thread and vreses is kept)
is not enough.
In fact, what would happen if the user tries to bind _the_same_ thread
to two different vreses, each one associated to a different resource?
For that reason, the repository (and its accessor functions) has been
modified such that also the vres type is part of the key. Thus, the
same thread could be safely bound to one vres for each resource
we have in the system.
This commit implements a subset of the FRSH API for power management.
It only (for now) support CPU and make use of the special "resource"
acpi_cpu added by previous commits.
This commit augments the framework with the capability of dealing with
disk bandwidth, by means of a special disk scheduling algorithm, BFQ
(http://feanor.sssup.it/~fabio/linux/bfq/, provided it is present
in the kernel).
Notice that this commit is not enough to make disk contracts usable,
and some of the upcoming one are needed in order of "activate" them.