165e62974a8a6157140259b26e7156e39f53031b6Jeff Dike#ifndef __UM_IRQFLAGS_H 265e62974a8a6157140259b26e7156e39f53031b6Jeff Dike#define __UM_IRQFLAGS_H 365e62974a8a6157140259b26e7156e39f53031b6Jeff Dike 4a34978cbd977ab62c744f63daacd9dc1474482beAl Viroextern int get_signals(void); 5a34978cbd977ab62c744f63daacd9dc1474482beAl Viroextern int set_signals(int enable); 6a34978cbd977ab62c744f63daacd9dc1474482beAl Viroextern void block_signals(void); 7a34978cbd977ab62c744f63daacd9dc1474482beAl Viroextern void unblock_signals(void); 8a34978cbd977ab62c744f63daacd9dc1474482beAl Viro 9a34978cbd977ab62c744f63daacd9dc1474482beAl Virostatic inline unsigned long arch_local_save_flags(void) 10a34978cbd977ab62c744f63daacd9dc1474482beAl Viro{ 11a34978cbd977ab62c744f63daacd9dc1474482beAl Viro return get_signals(); 12a34978cbd977ab62c744f63daacd9dc1474482beAl Viro} 13a34978cbd977ab62c744f63daacd9dc1474482beAl Viro 14a34978cbd977ab62c744f63daacd9dc1474482beAl Virostatic inline void arch_local_irq_restore(unsigned long flags) 15a34978cbd977ab62c744f63daacd9dc1474482beAl Viro{ 16a34978cbd977ab62c744f63daacd9dc1474482beAl Viro set_signals(flags); 17a34978cbd977ab62c744f63daacd9dc1474482beAl Viro} 18a34978cbd977ab62c744f63daacd9dc1474482beAl Viro 19a34978cbd977ab62c744f63daacd9dc1474482beAl Virostatic inline void arch_local_irq_enable(void) 20a34978cbd977ab62c744f63daacd9dc1474482beAl Viro{ 21a34978cbd977ab62c744f63daacd9dc1474482beAl Viro unblock_signals(); 22a34978cbd977ab62c744f63daacd9dc1474482beAl Viro} 23a34978cbd977ab62c744f63daacd9dc1474482beAl Viro 24a34978cbd977ab62c744f63daacd9dc1474482beAl Virostatic inline void arch_local_irq_disable(void) 25a34978cbd977ab62c744f63daacd9dc1474482beAl Viro{ 26a34978cbd977ab62c744f63daacd9dc1474482beAl Viro block_signals(); 27a34978cbd977ab62c744f63daacd9dc1474482beAl Viro} 28a34978cbd977ab62c744f63daacd9dc1474482beAl Viro 29a34978cbd977ab62c744f63daacd9dc1474482beAl Virostatic inline unsigned long arch_local_irq_save(void) 30a34978cbd977ab62c744f63daacd9dc1474482beAl Viro{ 31a34978cbd977ab62c744f63daacd9dc1474482beAl Viro unsigned long flags; 32a34978cbd977ab62c744f63daacd9dc1474482beAl Viro flags = arch_local_save_flags(); 33a34978cbd977ab62c744f63daacd9dc1474482beAl Viro arch_local_irq_disable(); 34a34978cbd977ab62c744f63daacd9dc1474482beAl Viro return flags; 35a34978cbd977ab62c744f63daacd9dc1474482beAl Viro} 36a34978cbd977ab62c744f63daacd9dc1474482beAl Viro 37a34978cbd977ab62c744f63daacd9dc1474482beAl Virostatic inline bool arch_irqs_disabled(void) 38a34978cbd977ab62c744f63daacd9dc1474482beAl Viro{ 39a34978cbd977ab62c744f63daacd9dc1474482beAl Viro return arch_local_save_flags() == 0; 40a34978cbd977ab62c744f63daacd9dc1474482beAl Viro} 4165e62974a8a6157140259b26e7156e39f53031b6Jeff Dike 4265e62974a8a6157140259b26e7156e39f53031b6Jeff Dike#endif 43