本文整理汇总了C++中NACL_VTBL函数的典型用法代码示例。如果您正苦于以下问题:C++ NACL_VTBL函数的具体用法?C++ NACL_VTBL怎么用?C++ NACL_VTBL使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NACL_VTBL函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: NaClNameServiceCtor
int NaClNameServiceCtor(struct NaClNameService *self,
NaClThreadIfFactoryFunction thread_factory_fn,
void *thread_factory_data) {
int retval = 0; /* fail */
NaClLog(4, "Entered NaClNameServiceCtor\n");
if (!NaClSimpleLtdServiceCtor(&self->base,
kNaClNameServiceHandlers,
NACL_NAME_SERVICE_CONNECTION_MAX,
thread_factory_fn,
thread_factory_data)) {
NaClLog(4, "NaClSimpleLtdServiceCtor failed\n");
goto done;
}
if (!NaClMutexCtor(&self->mu)) {
NaClLog(4, "NaClMutexCtor failed\n");
goto abort_mu;
}
NACL_VTBL(NaClRefCount, self) = (struct NaClRefCountVtbl *)
&kNaClNameServiceVtbl;
/* success return path */
self->head = (struct NaClNameServiceEntry *) NULL;
retval = 1;
goto done;
/* cleanup unwind */
abort_mu: /* mutex ctor failed */
(*NACL_VTBL(NaClRefCount, self)->Dtor)((struct NaClRefCount *) self);
done:
return retval;
}
示例2: NaClManifestProxyConnectionDtor
static void NaClManifestProxyConnectionDtor(struct NaClRefCount *vself) {
struct NaClManifestProxyConnection *self =
(struct NaClManifestProxyConnection *) vself;
NaClLog(4,
"Entered NaClManifestProxyConnectionDtor: self 0x%"NACL_PRIxPTR"\n",
(uintptr_t) self);
NaClXMutexLock(&self->mu);
while (!self->channel_initialized) {
NaClLog(4,
"NaClManifestProxyConnectionDtor:"
" waiting for connection initialization\n");
NaClXCondVarWait(&self->cv, &self->mu);
}
NaClXMutexUnlock(&self->mu);
NaClLog(4, "NaClManifestProxyConnectionDtor: dtoring\n");
NaClCondVarDtor(&self->cv);
NaClMutexDtor(&self->mu);
NaClSrpcDtor(&self->client_channel);
NACL_VTBL(NaClSimpleServiceConnection, self) =
&kNaClSimpleServiceConnectionVtbl;
(*NACL_VTBL(NaClRefCount, self)->Dtor)(vself);
}
示例3: NaClReverseThreadIfCtor_protected
int NaClReverseThreadIfCtor_protected(
struct NaClReverseCountingThreadInterface *self,
void *factory_data,
NaClThreadIfStartFunction fn_ptr,
void *thread_data,
size_t thread_stack_size) {
struct NaClReverseService *nrsp = (struct NaClReverseService *) factory_data;
NaClLog(3, "Entered NaClReverseThreadIfCtor_protected\n");
if (!NaClThreadInterfaceCtor_protected(
(struct NaClThreadInterface *) self,
NaClReverseThreadIfFactoryFn,
NaClRefCountRef((struct NaClRefCount *) nrsp),
fn_ptr,
thread_data,
thread_stack_size)) {
NaClLog(4, "NaClThreadInterfaceCtor_protected failed\n");
NaClRefCountUnref((struct NaClRefCount *) nrsp);
return 0;
}
self->reverse_service = nrsp;
(*NACL_VTBL(NaClReverseService, nrsp)->ThreadCountIncr)(nrsp);
NACL_VTBL(NaClRefCount, self) =
(struct NaClRefCountVtbl *) &kNaClReverseThreadInterfaceVtbl;
NaClLog(3, "Leaving NaClAddrSpSquattingThreadIfCtor_protected\n");
return 1;
}
示例4: NaClGetFileOriginInfo
int NaClGetFileOriginInfo(struct NaClDesc *desc,
struct NaClRichFileInfo *info) {
int32_t metadata_type;
uint8_t *buffer = NULL;
uint32_t buffer_length = 0;
int status;
/* Get the buffer length. */
metadata_type = NACL_VTBL(NaClDesc, desc)->GetMetadata(
desc,
&buffer_length,
NULL);
if (metadata_type != NACL_DESC_METADATA_ORIGIN_INFO_TYPE)
return 1;
buffer = (uint8_t *) malloc(buffer_length);
if (NULL == buffer)
return 1;
metadata_type = NACL_VTBL(NaClDesc, desc)->GetMetadata(
desc,
&buffer_length,
buffer);
if (metadata_type != NACL_DESC_METADATA_ORIGIN_INFO_TYPE)
return 1;
status = NaClDeserializeNaClDescMetadata(buffer, buffer_length, info);
free(buffer);
return status;
}
示例5: NaClReverseInterfaceDtor
void NaClReverseInterfaceDtor(struct NaClRefCount *vself) {
struct NaClReverseInterface *self =
(struct NaClReverseInterface *) vself;
NACL_VTBL(NaClRefCount, self) = &kNaClRefCountVtbl;
(*NACL_VTBL(NaClRefCount, self)->Dtor)(vself);
}
示例6: NaClDescRngDtor
static void NaClDescRngDtor(struct NaClRefCount *vself) {
struct NaClDescRng *self = (struct NaClDescRng *) vself;
(*NACL_VTBL(NaClSecureRngIf, &self->rng)->Dtor)(
(struct NaClSecureRngIf *) &self->rng);
NACL_VTBL(NaClDesc, self) = &kNaClDescVtbl;
(*NACL_VTBL(NaClRefCount, self)->Dtor)((struct NaClRefCount *) self);
}
示例7: NaClDescQuotaPWrite
ssize_t NaClDescQuotaPWrite(struct NaClDesc *vself,
void const *buf,
size_t len,
nacl_off64_t offset) {
struct NaClDescQuota *self = (struct NaClDescQuota *) vself;
uint64_t len_u64;
int64_t allowed;
ssize_t rv;
if (0 == len) {
allowed = 0;
} else {
NACL_COMPILE_TIME_ASSERT(SIZE_T_MAX <= NACL_UMAX_VAL(uint64_t));
/*
* Write can always return a short, non-zero transfer count.
*/
len_u64 = (uint64_t) len;
/* get rid of the always-true/always-false comparison warning */
if (len_u64 > NACL_MAX_VAL(int64_t)) {
len = (size_t) NACL_MAX_VAL(int64_t);
}
if (NULL == self->quota_interface) {
/* If there is no quota_interface, do not allow writes. */
allowed = 0;
} else {
allowed = (*NACL_VTBL(NaClDescQuotaInterface, self->quota_interface)->
WriteRequest)(self->quota_interface,
self->file_id, offset, len);
}
if (allowed <= 0) {
rv = -NACL_ABI_EDQUOT;
goto abort;
}
/*
* allowed <= len should be a post-condition, but we check for
* it anyway.
*/
if ((uint64_t) allowed > len) {
NaClLog(LOG_WARNING,
("NaClDescQuotaPWrite: WriteRequest returned an allowed quota"
" that is larger than that requested; reducing to original"
" request amount.\n"));
allowed = len;
}
}
/*
* It is possible for Write to write fewer than bytes than the quota
* that was granted, in which case quota will leak.
* TODO(sehr,bsy): eliminate quota leakage.
*/
rv = (*NACL_VTBL(NaClDesc, self->desc)->PWrite)(self->desc,
buf, (size_t) allowed,
offset);
abort:
return rv;
}
示例8: NaClSimpleServiceDtor
void NaClSimpleServiceDtor(struct NaClRefCount *vself) {
struct NaClSimpleService *self = (struct NaClSimpleService *) vself;
NaClRefCountSafeUnref((struct NaClRefCount *) self->bound_and_cap[0]);
NaClRefCountSafeUnref((struct NaClRefCount *) self->bound_and_cap[1]);
NACL_VTBL(NaClRefCount, self) = &kNaClRefCountVtbl;
(*NACL_VTBL(NaClRefCount, self)->Dtor)(vself);
}
示例9: NaClReverseHostInterfaceDtor
void NaClReverseHostInterfaceDtor(struct NaClRefCount *vself) {
struct NaClReverseHostInterface *self =
(struct NaClReverseHostInterface *) vself;
NaClRefCountUnref((struct NaClRefCount *) self->server);
NACL_VTBL(NaClRefCount, self) = &kNaClRefCountVtbl;
(*NACL_VTBL(NaClRefCount, self)->Dtor)(vself);
}
示例10: NaClKernelServiceDtor
void NaClKernelServiceDtor(struct NaClRefCount *vself) {
struct NaClKernelService *self = (struct NaClKernelService *) vself;
NaClRefCountUnref((struct NaClRefCount *) self->runtime_host);
NACL_VTBL(NaClRefCount, self) =
(struct NaClRefCountVtbl *) &kNaClSimpleServiceVtbl;
(*NACL_VTBL(NaClRefCount, self)->Dtor)(vself);
}
示例11: NaClReverseThreadIfDtor
void NaClReverseThreadIfDtor(struct NaClRefCount *vself) {
struct NaClReverseCountingThreadInterface *self =
(struct NaClReverseCountingThreadInterface *) vself;
NaClRefCountUnref((struct NaClRefCount *) self->reverse_service);
self->reverse_service = NULL;
NACL_VTBL(NaClRefCount, self) = &kNaClRefCountVtbl;
(*NACL_VTBL(NaClRefCount, self)->Dtor)(vself);
}
示例12: NaClDescPostMessageDtor
static void NaClDescPostMessageDtor(struct NaClRefCount *vself) {
struct NaClDescPostMessage *self = (struct NaClDescPostMessage *) vself;
NaClLog(4, "Entered NaClDescPostMessageDtor\n");
self->nap = NULL;
NACL_VTBL(NaClRefCount, vself) =
(struct NaClRefCountVtbl const *) &kNaClDescVtbl;
(*NACL_VTBL(NaClRefCount, vself)->Dtor)(vself);
NaClLog(4, "Leaving NaClDescPostMessageDtor\n");
}
示例13: NaClSimpleServiceConnectionDtor
void NaClSimpleServiceConnectionDtor(struct NaClRefCount *vself) {
struct NaClSimpleServiceConnection *self =
(struct NaClSimpleServiceConnection *) vself;
NaClRefCountUnref((struct NaClRefCount *) self->server);
NaClRefCountUnref((struct NaClRefCount *) self->connected_socket);
NACL_VTBL(NaClRefCount, self) = &kNaClRefCountVtbl;
(*NACL_VTBL(NaClRefCount, self)->Dtor)(vself);
}
示例14: NaClManifestProxyDtor
static void NaClManifestProxyDtor(struct NaClRefCount *vself) {
struct NaClManifestProxy *self =
(struct NaClManifestProxy *) vself;
NaClRefCountUnref((struct NaClRefCount *) self->server);
NACL_VTBL(NaClRefCount, self) =
(struct NaClRefCountVtbl *) &kNaClSimpleServiceVtbl;
(*NACL_VTBL(NaClRefCount, self)->Dtor)(vself);
}
示例15: NaClSimpleLtdServiceDtor
void NaClSimpleLtdServiceDtor(struct NaClRefCount *vself) {
struct NaClSimpleLtdService *self =
(struct NaClSimpleLtdService *) vself;
CHECK(0 == self->num_clients);
NaClCondVarDtor(&self->cv);
NaClMutexDtor(&self->mu);
NACL_VTBL(NaClRefCount, self) =
(struct NaClRefCountVtbl *) &kNaClSimpleServiceVtbl;
(*NACL_VTBL(NaClRefCount, self)->Dtor)((struct NaClRefCount *) self);
}