Lines Matching refs:pClient
122 static void add_msg(struct r3964_client_info *pClient, int msg_id, int arg,
125 struct r3964_client_info *pClient);
127 struct r3964_client_info *pClient);
478 struct r3964_client_info *pClient; in on_receive_block() local
537 for (pClient = pInfo->firstClient; pClient; pClient = pClient->next) { in on_receive_block()
538 if (pClient->sig_flags & R3964_SIG_DATA) { in on_receive_block()
539 add_msg(pClient, R3964_MSG_DATA, length, R3964_OK, in on_receive_block()
738 struct r3964_client_info *pClient; in findClient() local
740 for (pClient = pInfo->firstClient; pClient; pClient = pClient->next) { in findClient()
741 if (pClient->pid == pid) { in findClient()
742 return pClient; in findClient()
750 struct r3964_client_info *pClient; in enable_signals() local
758 pClient = *ppClient; in enable_signals()
760 if (pClient->pid == pid) { in enable_signals()
763 *ppClient = pClient->next; in enable_signals()
764 while (pClient->msg_count) { in enable_signals()
765 pMsg = remove_msg(pInfo, pClient); in enable_signals()
772 put_pid(pClient->pid); in enable_signals()
773 kfree(pClient); in enable_signals()
774 TRACE_M("enable_signals - kfree %p", pClient); in enable_signals()
780 pClient = findClient(pInfo, pid); in enable_signals()
781 if (pClient) { in enable_signals()
783 pClient->sig_flags = arg; in enable_signals()
786 pClient = kmalloc(sizeof(struct r3964_client_info), in enable_signals()
788 TRACE_M("enable_signals - kmalloc %p", pClient); in enable_signals()
789 if (pClient == NULL) in enable_signals()
793 spin_lock_init(&pClient->lock); in enable_signals()
794 pClient->sig_flags = arg; in enable_signals()
795 pClient->pid = get_pid(pid); in enable_signals()
796 pClient->next = pInfo->firstClient; in enable_signals()
797 pClient->first_msg = NULL; in enable_signals()
798 pClient->last_msg = NULL; in enable_signals()
799 pClient->next_block_to_read = NULL; in enable_signals()
800 pClient->msg_count = 0; in enable_signals()
801 pInfo->firstClient = pClient; in enable_signals()
811 struct r3964_client_info *pClient; in read_telegram() local
818 pClient = findClient(pInfo, pid); in read_telegram()
819 if (pClient == NULL) { in read_telegram()
823 block = pClient->next_block_to_read; in read_telegram()
830 remove_client_block(pInfo, pClient); in read_telegram()
837 static void add_msg(struct r3964_client_info *pClient, int msg_id, int arg, in add_msg() argument
843 if (pClient->msg_count < R3964_MAX_MSG_COUNT - 1) { in add_msg()
853 spin_lock_irqsave(&pClient->lock, flags); in add_msg()
861 if (pClient->last_msg == NULL) { in add_msg()
862 pClient->first_msg = pClient->last_msg = pMsg; in add_msg()
864 pClient->last_msg->next = pMsg; in add_msg()
865 pClient->last_msg = pMsg; in add_msg()
868 pClient->msg_count++; in add_msg()
873 spin_unlock_irqrestore(&pClient->lock, flags); in add_msg()
875 if ((pClient->last_msg->msg_id == R3964_MSG_ACK) in add_msg()
876 && (pClient->last_msg->error_code == R3964_OVERFLOW)) { in add_msg()
877 pClient->last_msg->arg++; in add_msg()
889 if (pClient->sig_flags & R3964_USE_SIGIO) { in add_msg()
890 kill_pid(pClient->pid, SIGIO, 1); in add_msg()
895 struct r3964_client_info *pClient) in remove_msg() argument
900 if (pClient->first_msg) { in remove_msg()
901 spin_lock_irqsave(&pClient->lock, flags); in remove_msg()
903 pMsg = pClient->first_msg; in remove_msg()
904 pClient->first_msg = pMsg->next; in remove_msg()
905 if (pClient->first_msg == NULL) { in remove_msg()
906 pClient->last_msg = NULL; in remove_msg()
909 pClient->msg_count--; in remove_msg()
911 remove_client_block(pInfo, pClient); in remove_msg()
912 pClient->next_block_to_read = pMsg->block; in remove_msg()
914 spin_unlock_irqrestore(&pClient->lock, flags); in remove_msg()
920 struct r3964_client_info *pClient) in remove_client_block() argument
924 TRACE_PS("remove_client_block PID %d", pid_nr(pClient->pid)); in remove_client_block()
926 block = pClient->next_block_to_read; in remove_client_block()
933 pClient->next_block_to_read = NULL; in remove_client_block()
1004 struct r3964_client_info *pClient, *pNext; in r3964_close() local
1018 pClient = pInfo->firstClient; in r3964_close()
1019 while (pClient) { in r3964_close()
1020 pNext = pClient->next; in r3964_close()
1021 while (pClient->msg_count) { in r3964_close()
1022 pMsg = remove_msg(pInfo, pClient); in r3964_close()
1028 put_pid(pClient->pid); in r3964_close()
1029 kfree(pClient); in r3964_close()
1030 TRACE_M("r3964_close - client kfree %p", pClient); in r3964_close()
1031 pClient = pNext; in r3964_close()
1058 struct r3964_client_info *pClient; in r3964_read() local
1076 pClient = findClient(pInfo, task_pid(current)); in r3964_read()
1077 if (pClient) { in r3964_read()
1078 pMsg = remove_msg(pInfo, pClient); in r3964_read()
1087 (pMsg = remove_msg(pInfo, pClient))); in r3964_read()
1125 struct r3964_client_info *pClient; in r3964_write() local
1165 pClient = findClient(pInfo, task_pid(current)); in r3964_write()
1166 if (pClient) { in r3964_write()
1167 pHeader->owner = pClient; in r3964_write()
1223 struct r3964_client_info *pClient; in r3964_poll() local
1230 pClient = findClient(pInfo, task_pid(current)); in r3964_poll()
1231 if (pClient) { in r3964_poll()
1234 pMsg = pClient->first_msg; in r3964_poll()