* of vres parameters. */
int ac_sockd;
/** Queue for messages to send */
- struct fwp_msgq msg_queue;
+ struct fwp_msgq msg_queue;
+ /** If true, it is always allowed to send messages through this vres. */
+ bool bypass;
};
/**< mapping priority to ac*/
apply_params(vres);
fwp_msgq_init(&vres->msg_queue);
+ if (getenv("FWP_BYPASS"))
+ vres->bypass = true;
+
pthread_attr_init(&vres->tx_thread_attr);
if ((rv = pthread_create(&vres->tx_thread, &vres->tx_thread_attr,
fwp_vres_tx_thread, (void*) vres)) != 0){
int __consume_budget(struct fwp_vres *vres, size_t size, bool can_block)
{
int ret = 0;
+ if (vres->bypass)
+ return 0;
if (vres->params.budget < size) {
errno = ENOSR;
return -1;
utilization += (long long)(duration_usec * 10000) / period_usec;
}
- if (utilization >= 10000 * 96/100) {
+ if (utilization >= 10000 * 96/100 && !pr->bypass) {
goto not_schedulable;
}
scenario->utilization = utilization/100; /* For GUI */
forb_init_attr_t attr = { .orb_id = "org.frescor.frm.fwp" };
int opt;
+ if (getenv("FWP_BYPASS"))
+ priv.bypass = true;
+
+
while ((opt = getopt_long(argc, argv, "b:l:os", &long_opts[0], NULL)) != EOF) {
switch (opt) {
case 'l':