some improvment

1. fix tracepoint entry dynamic memory allocation
   add pre_trace and post_trace functions

2. add in_interrupt() basic function

3. make kmalloc not sleepable
   now it is safe to use kmalloc in interrupt context