Permissable interrupt function calls

Which system calls are permitted from within an interrupt service routine?
It would seem that without some basic I/O (e.g., digitalWrite(), digitalRead() or better digitalWriteFast(), pinReadFast()) the the ISR is significantly compromised.
In addition, I would like to use tone() or analogWrite() (PWM), and detachInterrupt().
Should this be allowed?
And when are we going to get a real multi-tasking system with real threads, queues, semaphores, etc???


All these functions are allowed in an ISR.