Kernel functions for inter-processor communications in high performance multi-processor systems
First Claim
1. A method for operating a computer, the computer having a multi-tasking operating system that includes a user space and a kernel in a kernel space, a receive buffer and a plurality of application processes, each of the plurality of application processes including a user application that runs in the user space, the method comprising the steps of:
- polling the receive buffer from a user polling function that runs in the kernel space;
receiving in the receive buffer a data packet having a header and user data;
reading the header of the received data packet;
identifying a target application process of the plurality of application processes from the read header;
delivering the user data to the identified target application process, andif the identified target application process is in a blocked state, changing the blocked target application process to an unblocked state.
4 Assignments
0 Petitions
Accused Products
Abstract
In a multi-processor system with a high degree of inter processor communication, an operating system extension is described as a kernel function to poll a receive buffer. This is an opportunistic poll that continues to run in the user context after an application process has invoked the kernel with a blocking receive function. It is also running whenever no higher priority task is running. New data packets may be received for the present user application process while avoiding context switches, and for a different user process while avoiding interrupts. A hardware implemented delay timer and a buffer fill monitor generate interrupts when the system is not polling, thus guaranteeing a maximum latency and preventing buffer overflow, but these interrupts are largely avoided by polling when the system is handling a large amount of inter processor data traffic.
104 Citations
34 Claims
-
1. A method for operating a computer, the computer having a multi-tasking operating system that includes a user space and a kernel in a kernel space, a receive buffer and a plurality of application processes, each of the plurality of application processes including a user application that runs in the user space, the method comprising the steps of:
-
polling the receive buffer from a user polling function that runs in the kernel space; receiving in the receive buffer a data packet having a header and user data; reading the header of the received data packet; identifying a target application process of the plurality of application processes from the read header; delivering the user data to the identified target application process, and if the identified target application process is in a blocked state, changing the blocked target application process to an unblocked state. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A computer, comprising:
-
a multi-tasking operating system having a user space and a kernel in a kernel space; a receive buffer, configured to receive a data packet having a header and user data; a plurality of application processes, each of the plurality of application processes including a user application that runs in the user space, at least one of the plurality of application processes being polling application processes that also include a user polling function that runs in the kernel space, each of the plurality of application process being configured to assume an unblocked or a blocked state, the user polling function being configured to poll the receive buffer and, when a data packet is present in the receive buffer, to read the header of the data packet, to identify a target application process for the data packet from the read header, to deliver the user data to the identified target application process and to change a state of the target application process to the unblocked state if the target application process is in the blocked state. - View Dependent Claims (20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34)
-
Specification