LCOV - code coverage report
Current view: directory - src/trusted/desc - nacl_desc_custom.c (source / functions) Found Hit Coverage
Test: coverage.lcov Lines: 33 30 90.9 %
Date: 2014-06-18 Functions: 0 0 -

       1                 : /*
       2                 :  * Copyright (c) 2012 The Native Client Authors. All rights reserved.
       3                 :  * Use of this source code is governed by a BSD-style license that can be
       4                 :  * found in the LICENSE file.
       5                 :  */
       6                 : 
       7                 : #include "native_client/src/trusted/desc/nacl_desc_custom.h"
       8                 : 
       9                 : #include "native_client/src/shared/platform/nacl_check.h"
      10                 : 
      11                 : 
      12                 : struct NaClDescCustom {
      13                 :   struct NaClDesc base NACL_IS_REFCOUNT_SUBCLASS;
      14                 :   void *handle;
      15                 :   struct NaClDescCustomFuncs funcs;
      16                 : };
      17                 : 
      18                 : static const struct NaClDescVtbl kNaClDescCustomVtbl;
      19                 : 
      20                 : 
      21                 : struct NaClDesc *NaClDescMakeCustomDesc(
      22               9 :     void *handle, const struct NaClDescCustomFuncs *funcs) {
      23               9 :   struct NaClDescCustom *desc = malloc(sizeof *desc);
      24               9 :   if (NULL == desc) {
      25               0 :     return NULL;
      26                 :   }
      27               9 :   if (!NaClDescCtor(&desc->base)) {
      28               0 :     free(desc);
      29               0 :     return NULL;
      30                 :   }
      31                 :   /* For simplicity, all the callbacks are currently required. */
      32              36 :   DCHECK(funcs->Destroy != NULL);
      33              36 :   DCHECK(funcs->SendMsg != NULL);
      34              36 :   DCHECK(funcs->RecvMsg != NULL);
      35               9 :   desc->handle = handle;
      36               9 :   desc->funcs = *funcs;
      37               9 :   desc->base.base.vtbl = (const struct NaClRefCountVtbl *) &kNaClDescCustomVtbl;
      38               9 :   return &desc->base;
      39               9 : }
      40                 : 
      41               5 : static void NaClDescCustomDtor(struct NaClRefCount *vself) {
      42               5 :   struct NaClDescCustom *self = (struct NaClDescCustom *) vself;
      43                 : 
      44               5 :   (*self->funcs.Destroy)(self->handle);
      45               5 :   vself->vtbl = (const struct NaClRefCountVtbl *) &kNaClDescVtbl;
      46               5 :   (*vself->vtbl->Dtor)(vself);
      47               5 : }
      48                 : 
      49               5 : static ssize_t NaClDescCustomSendMsg(struct NaClDesc                 *vself,
      50               5 :                                      const struct NaClImcTypedMsgHdr *msg,
      51               5 :                                      int                             flags) {
      52               5 :   struct NaClDescCustom *self = (struct NaClDescCustom *) vself;
      53                 : 
      54               5 :   return (*self->funcs.SendMsg)(self->handle, msg, flags);
      55                 : }
      56                 : 
      57                 : static ssize_t NaClDescCustomRecvMsg(
      58               3 :     struct NaClDesc               *vself,
      59               3 :     struct NaClImcTypedMsgHdr     *msg,
      60               3 :     int                           flags,
      61               3 :     struct NaClDescQuotaInterface *quota_interface) {
      62               3 :   struct NaClDescCustom *self = (struct NaClDescCustom *) vself;
      63               6 :   UNREFERENCED_PARAMETER(quota_interface);
      64                 : 
      65               3 :   return (*self->funcs.RecvMsg)(self->handle, msg, flags);
      66                 : }
      67                 : 
      68                 : static const struct NaClDescVtbl kNaClDescCustomVtbl = {
      69                 :   {
      70                 :     NaClDescCustomDtor,  /* diff */
      71                 :   },
      72                 :   NaClDescMapNotImplemented,
      73                 :   NACL_DESC_UNMAP_NOT_IMPLEMENTED
      74                 :   NaClDescReadNotImplemented,
      75                 :   NaClDescWriteNotImplemented,
      76                 :   NaClDescSeekNotImplemented,
      77                 :   NaClDescPReadNotImplemented,
      78                 :   NaClDescPWriteNotImplemented,
      79                 :   NaClDescFstatNotImplemented,
      80                 :   NaClDescGetdentsNotImplemented,
      81                 :   NaClDescExternalizeSizeNotImplemented,
      82                 :   NaClDescExternalizeNotImplemented,
      83                 :   NaClDescLockNotImplemented,
      84                 :   NaClDescTryLockNotImplemented,
      85                 :   NaClDescUnlockNotImplemented,
      86                 :   NaClDescWaitNotImplemented,
      87                 :   NaClDescTimedWaitAbsNotImplemented,
      88                 :   NaClDescSignalNotImplemented,
      89                 :   NaClDescBroadcastNotImplemented,
      90                 :   NaClDescCustomSendMsg,  /* diff */
      91                 :   NaClDescCustomRecvMsg,  /* diff */
      92                 :   NaClDescLowLevelSendMsgNotImplemented,
      93                 :   NaClDescLowLevelRecvMsgNotImplemented,
      94                 :   NaClDescConnectAddrNotImplemented,
      95                 :   NaClDescAcceptConnNotImplemented,
      96                 :   NaClDescPostNotImplemented,
      97                 :   NaClDescSemWaitNotImplemented,
      98                 :   NaClDescGetValueNotImplemented,
      99                 :   NaClDescSetMetadata,
     100                 :   NaClDescGetMetadata,
     101                 :   NaClDescSetFlags,
     102                 :   NaClDescGetFlags,
     103                 :   NaClDescIsattyNotImplemented,
     104                 :   NACL_DESC_CUSTOM,  /* diff */
     105                 : };

Generated by: LCOV version 1.7