/* These functions support sending signals using preallocated sigqueue structures. This is needed "because realtime applications cannot afford to lose notifications of asynchronous events, like timer expirations or I/O completions". In the case of Posix Timers we allocate the sigqueue structure from the timer_create. If this allocation fails we are able to report the failure to the application with an EAGAIN error.  */
struct sigqueue* sigqueue_alloc(void)
/* These functions support sending signals using preallocated sigqueue structures. This is needed "because realtime applications cannot afford to lose notifications of asynchronous events, like timer expirations or I/O completions". In the case of Posix Timers we allocate the sigqueue structure from the timer_create. If this allocation fails we are able to report the failure to the application with an EAGAIN error.  */
struct sigqueue* sigqueue_alloc(void)
{
	struct sigqueue *q = __sigqueue_alloc(-1, current, GFP_KERNEL, 0);
	if (q)
		q->flags |= SIGQUEUE_PREALLOC;
	return q;
}