Can someone please explain me this snippet of code here taken from linux kernel?
/* * how to get the thread information struct from C */ static inline struct thread_info *current_thread_info(void) __attribute_const__; static inline struct thread_info *current_thread_info(void) { register unsigned long sp asm ("sp"); return (struct thread_info *)(sp & ~(THREAD_SIZE - 1));}Questions:
- what is
__attribute_const__? - what does this do
register unsigned long sp asm ("sp"); - why
(struct thread_info *)(sp & ~(THREAD_SIZE - 1));return apointer to the struct?