1. A computer-implemented method for facilitating communication between code modules comprising: providing a first code module making at least one call using an application programming interface, the application programming interface facilitating communication between the first code module and a target code module wherein the application programming interface provides support for performing the at least one call from a first execution mode associated with the first code module and a second execution mode associated with the target code module, said application programming interface providing support for user space to user space communication, user space to kernel space communication, kernel space to kernel space communication, and kernel to user space communication; determining, by code of the application programming interface, said first execution mode of the first code module and said second execution mode of the target code module, wherein said first execution mode and said second execution mode are one of a user execution mode or a kernel execution mode; and establishing, using code of the application programming interface, a communication path between said first code module and said target code module in accordance with said first execution mode and said second execution mode.