Home | History | Annotate | Download | only in BsdSocketLib
      1 /** @file
      2   Implement the poll API.
      3 
      4   Copyright (c) 2011 - 2014, Intel Corporation. All rights reserved.<BR>
      5   This program and the accompanying materials are licensed and made available under
      6   the terms and conditions of the BSD License that accompanies this distribution.
      7   The full text of the license may be found at
      8   http://opensource.org/licenses/bsd-license.php.
      9 
     10   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     11   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     12 **/
     13 #include <SocketInternals.h>
     14 
     15 
     16 /** Poll the socket for activity
     17 
     18   @param [in] pDescriptor Descriptor address for the file
     19   @param [in] Events      Mask of events to detect
     20 
     21   @return     Detected events for the socket
     22  **/
     23 short
     24 EFIAPI
     25 BslSocketPoll (
     26   IN struct __filedes * pDescriptor,
     27   IN short Events
     28   )
     29 {
     30   short                 DetectedEvents;
     31   EFI_SOCKET_PROTOCOL * pSocketProtocol;
     32 
     33   //  Locate the socket protocol
     34   DetectedEvents = 0;
     35   pSocketProtocol = BslValidateSocketFd ( pDescriptor, &errno );
     36   if ( NULL != pSocketProtocol ) {
     37     //  Poll the socket
     38     (void) pSocketProtocol->pfnPoll ( pSocketProtocol,
     39                                       Events,
     40                                       &DetectedEvents,
     41                                       &errno );
     42   }
     43   //  Return the detected events
     44   return DetectedEvents;
     45 }
     46