Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
The problem is that, when i try to call init_timer() from the kernel nothing happen. The weird thing is that if i try to run the OS with Bochs(starting it with GRUB's countdown, without touching the keyboard) it prints this error:
Not this old chestnut again. Since I highly doubt you are handing a structure over correctly (according to the ABI, that is), I suggest you make the parameter into a pointer and hand that over.
03150576036e[CPU0 ] check_cs(0x0206): not a valid code segment !
.
The hint is in the message. There are only two ways how a code segment would be loaded: far jump or interrupt. So if you can exclude far jumps, this message is caused by an interrupt. And it means that either the CS reference in the relevant IDT entry is wrong, or the CS entry in the GDT is wrong. Happy debugging!