Pumpkin, Inc.

Pumpkin User Forums


If you can't make Salvo do what you want it to do, post it here.


Postby luben » Wed Jun 13, 2001 3:34 am


I have some questions about OSCALL_OSSIGNALEVENT configuration option.
If it's made equal to OSFROM_ANYWHERE the compiler should add before the resources that supports messages, eflags, message queues, semaphores, etc. the directive #pragma interrupt_level 0.
This shows to the compiler, that it should not care for that you call these functions from ISR
Imagine that you have project with both BINSEM and MESSAGES and I set OFCALL_OSSIGNALEVENT = OSFROM_ANYWHERE, but I call from ISR only one of the functions, let’s say the OSSignalXYZ().
How the compiler will understand that only this function is called from ISR and other not? In the old SALVO were settings like OSCALL_OSSIGNALMSG, OSCALL_OSSIGNALMSGQ, etc. I meant, does the new SALVO automatically sets the necessary pragma before the functions? And how SALVO understands which function is called from main line, which from ISR and which from both places. In old SALVO this was all up to the user to set the OSCALL_OSSIGNALXYZ in right way. Well, I agree that I don’t have the sources, so what I can do is to ask when something is unclear.
Best regards and good luck of the new SALVO. I think now you should bring the weight to the advertising, you made more then enough in the programming.


Posts: 324
Joined: Sun Nov 19, 2000 12:00 am
Location: Sofia, Bulgaria


Postby Salvo Tech Support » Wed Jun 13, 2001 7:40 am

Hi Luben.

You're correct in noticing that the configuration options have changed. Basically, it had become much too complicated to have separate configuration options for each OSCALL_OSSIGNALXYZ. That's why we changed to just one.

Now, how does it work? It turns out that it's OK to use the interrupt_level pragma even if you don't have multiple call graphs! However, it's required if you do.

There are two issues that OSCALL_OSSIGNALEVENT deals with: the interrupt_level pragma (for PICC compilers), and the configuration of OSEnterCritical() and OSExitCritical() interrupt-control function. You can think of the proper value for OSCALL_OSSIGNALEVENT as the logical AND of the calls you are making. For example, if you are calling OSSignalBinSem() from the background, AND OSSignalSem() from the foreground, then you'll need to set OSCALL_OSSIGNALEVENT to OSFROM_ANYWHERE.

Please refer to Calling Event Services from Within Interrupts in AN-1 for a detailed explanation of how and why this works.


Salvo Technical Support
Please request all tech support through the Forums.

[This message has been edited by Salvo Tech Support (edited June 13, 2001).]

Salvo Technical Support
Please request all tech support through the Forums.
Salvo Tech Support
Posts: 173
Joined: Sun Nov 19, 2000 12:00 am

Return to Coding

Who is online

Users browsing this forum: No registered users and 3 guests