/* We need slightly different defs than SIGNAL, INTERRUPT */
#define AVR_ATOMIC_HANDLER(signame) \
- void signame() __attribute__ ((spontaneous, C))
+ void signame() @spontaneous() @C()
#define AVR_NONATOMIC_HANDLER(signame) \
- void signame() __attribute__ ((spontaneous, C))
+ void signame() @spontaneous() @C()
/* Macro to create union casting functions. */
#define DEFINE_UNION_CAST(func_name, from_type, to_type) \
/* Saves current interrupt mask state and disables interrupts. */
inline __nesc_atomic_t
-__nesc_atomic_start(void) __attribute__((spontaneous))
+__nesc_atomic_start(void) @spontaneous()
{
__nesc_atomic_t result = SREG;
__nesc_disable_interrupt();
/* Restores interrupt mask to original state. */
inline void
-__nesc_atomic_end(__nesc_atomic_t original_SREG) __attribute__((spontaneous))
+__nesc_atomic_end(__nesc_atomic_t original_SREG) @spontaneous()
{
SREG = original_SREG;
}
* @author Jonathan Hui\r
*/\r
\r
+#include <message.h>\r
+ \r
interface LowPowerListening {\r
\r
/**\r
// The signal attribute has opposite meaning in msp430-gcc than in avr-gcc
#define TOSH_SIGNAL(signame) \
-void sig_##signame() __attribute__((interrupt (signame), wakeup, C))
+ void sig_##signame() __attribute__((interrupt (signame), wakeup)) @C()
// TOSH_INTERRUPT allows nested interrupts
#define TOSH_INTERRUPT(signame) \
-void isr_##signame() __attribute__((interrupt (signame), signal, wakeup, C))
+ void isr_##signame() __attribute__((interrupt (signame), signal, wakeup)) @C()
#define SET_FLAG(port, flag) ((port) |= (flag))
typedef uint32_t __nesc_atomic_t;
//NOTE...at the moment, these functions will ONLY disable the IRQ...FIQ is left alone
-inline __nesc_atomic_t __nesc_atomic_start(void) __attribute__((spontaneous))
+inline __nesc_atomic_t __nesc_atomic_start(void) @spontaneous()
{
uint32_t result = 0;
uint32_t temp = 0;
return result;
}
-inline void __nesc_atomic_end(__nesc_atomic_t oldState) __attribute__((spontaneous))
+inline void __nesc_atomic_end(__nesc_atomic_t oldState) @spontaneous()
{
uint32_t statusReg = 0;
//make sure that we only mess with the INT bit
}
- int main() __attribute__ ((C, spontaneous)) {
+ int main() @C() @spontaneous() {
__nesc_disable_interrupt();
// We need slightly different defs than SIGNAL, INTERRUPT
#define TOSH_SIGNAL(signame) \
-void signame() __attribute__ ((signal, spontaneous, C))
+ void signame() __attribute__ ((signal)) @spontaneous() @C()
#define TOSH_INTERRUPT(signame) \
-void signame() __attribute__ ((interrupt, spontaneous, C))
+ void signame() __attribute__ ((interrupt)) @spontaneous() @C()
/* Watchdog Prescaler
*/
/* #ifndef NESC_BUILD_BINARY */
-/* inline __nesc_atomic_t __nesc_atomic_start(void) __attribute__((spontaneous)) */
+/* inline __nesc_atomic_t __nesc_atomic_start(void) @spontaneous() */
/* { */
/* __nesc_atomic_t result = inp(SREG); */
/* cli(); */
/* return result; */
/* } */
-/* inline void __nesc_atomic_end(__nesc_atomic_t oldSreg) __attribute__((spontaneous)) */
+/* inline void __nesc_atomic_end(__nesc_atomic_t oldSreg) @spontaneous() */
/* { */
/* outp(oldSreg, SREG); */
/* } */
}
implementation {
- int sim_main_start_mote() __attribute__ ((C, spontaneous)) {
+ int sim_main_start_mote() @C() @spontaneous() {
char timeBuf[128];
atomic {
/* First, initialize the Scheduler so components can post
}
- long long int sim_mote_euid(int mote) __attribute__ ((C, spontaneous)) {
+ long long int sim_mote_euid(int mote) @C() @spontaneous() {
long long int result;
int tmp = sim_node();
sim_set_node(mote);
return result;
}
- void sim_mote_set_euid(int mote, long long int id) __attribute__ ((C, spontaneous)) {
+ void sim_mote_set_euid(int mote, long long int id) @C() @spontaneous() {
int tmp = sim_node();
sim_set_node(mote);
call SimMote.setEuid(id);
sim_set_node(tmp);
}
- long long int sim_mote_start_time(int mote) __attribute__ ((C, spontaneous)) {
+ long long int sim_mote_start_time(int mote) @C() @spontaneous() {
long long int result;
int tmp = sim_node();
sim_set_node(mote);
return result;
}
- int sim_mote_get_variable_info(int mote, char* name, void** ptr, size_t* len) __attribute__ ((C, spontaneous)) {
+ int sim_mote_get_variable_info(int mote, char* name, void** ptr, size_t* len) @C() @spontaneous() {
int result;
int tmpID = sim_node();
sim_set_node(mote);
return result;
}
- void sim_mote_set_start_time(int mote, long long int t) __attribute__ ((C, spontaneous)) {
+ void sim_mote_set_start_time(int mote, long long int t) @C() @spontaneous() {
int tmpID = sim_node();
sim_set_node(mote);
startTime = t;
return;
}
- bool sim_mote_is_on(int mote) __attribute__ ((C, spontaneous)) {
+ bool sim_mote_is_on(int mote) @C() @spontaneous() {
bool result;
int tmp = sim_node();
sim_set_node(mote);
return result;
}
- void sim_mote_turn_on(int mote) __attribute__ ((C, spontaneous)) {
+ void sim_mote_turn_on(int mote) @C() @spontaneous() {
int tmp = sim_node();
sim_set_node(mote);
call SimMote.turnOn();
sim_set_node(tmp);
}
- void sim_mote_turn_off(int mote) __attribute__ ((C, spontaneous)) {
+ void sim_mote_turn_off(int mote) @C() @spontaneous() {
int tmp = sim_node();
sim_set_node(mote);
call SimMote.turnOff();
call SimMote.turnOn();
}
- void sim_mote_enqueue_boot_event(int mote) __attribute__ ((C, spontaneous)) {
+ void sim_mote_enqueue_boot_event(int mote) @C() @spontaneous() {
int tmp = sim_node();
sim_set_node(mote);
return evt;
}
- void active_message_deliver(int node, message_t* msg, sim_time_t t) __attribute__ ((C, spontaneous)) {
+ void active_message_deliver(int node, message_t* msg, sim_time_t t) @C() @spontaneous() {
sim_event_t* evt = allocate_deliver_event(node, msg, t);
sim_queue_insert(evt);
}
uses interface Init as SoftwareInit;
}
implementation {
- int main() __attribute__ ((C, spontaneous)) {
+ int main() @C() @spontaneous() {
atomic
{
/* First, initialize the Scheduler so components can post
EALREADY = 9, // The device state you are requesting is already set
};
-typedef uint8_t error_t __attribute__((combine(ecombine)));
+typedef uint8_t error_t @combine("ecombine");
error_t ecombine(error_t r1, error_t r2)
/* Returns: r1 if r1 == r2, FAIL otherwise. This is the standard error