Qualcuno può spiegare questo pezzo di codice che ho trovato nel sorgente del kernel di Linux. Vedo un sacco di codice come questo nel kernel di Linux e minix ma non riesco a trovare quello che fa (anche se i compilatori C supportano quel tipo di definizione di funzione)
/* IRQs are disabled and uidhash_lock is held upon function entry.
* IRQ state (as stored in flags) is restored and uidhash_lock released
* upon function exit.
*/
static void free_user(struct user_struct *up, unsigned long flags)
__releases(&uidhash_lock)
{
uid_hash_remove(up);
spin_unlock_irqrestore(&uidhash_lock, flags);
key_put(up->uid_keyring);
key_put(up->session_keyring);
kmem_cache_free(uid_cachep, up);
}
Non riesco a scoprire se questo riferimento __releases(&uidhash_lock)
prima che inizi la parentesi sia permesso O supportato. (È sicuramente supportato come nel kernel di Linux)