本文整理汇总了C++中Protect函数的典型用法代码示例。如果您正苦于以下问题:C++ Protect函数的具体用法?C++ Protect怎么用?C++ Protect使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Protect函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ReadSegment
// static
already_AddRefed<Shmem::SharedMemory>
Shmem::OpenExisting(IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead,
const IPC::Message& aDescriptor,
id_t* aId,
bool aProtect)
{
size_t size;
size_t pageSize = SharedMemory::SystemPageSize();
// |2*pageSize| is for the front and back sentinels
RefPtr<SharedMemory> segment = ReadSegment(aDescriptor, aId, &size, 2*pageSize);
if (!segment) {
return nullptr;
}
Header* header = GetHeader(segment);
if (size != header->mSize) {
// Deallocation should zero out the header, so check for that.
if (header->mSize || header->mUnsafe || header->mMagic[0] ||
memcmp(header->mMagic, &header->mMagic[1], sizeof(header->mMagic)-1)) {
NS_ERROR("Wrong size for this Shmem!");
} else {
NS_WARNING("Shmem was deallocated");
}
return nullptr;
}
// The caller of this function may not know whether the segment is
// unsafe or not
if (!header->mUnsafe && aProtect)
Protect(segment);
return segment.forget();
}
示例2: Protect
/*----------------------------------------------*/
PLH::MemoryProtect::MemoryProtect(void* Address, size_t Size, DWORD ProtectionFlags)
{
m_Address = Address;
m_Size = Size;
m_Flags = ProtectionFlags;
Protect(m_Address, m_Size, m_Flags);
}
示例3: ves_icall_Mono_Security_Cryptography_KeyPairPersistence_ProtectUser
MonoBoolean
ves_icall_Mono_Security_Cryptography_KeyPairPersistence_ProtectUser (const gunichar2 *path, MonoError *error)
{
gboolean ret = FALSE;
/* read/write to user, no access to everyone else */
ret = Protect (path, (S_IRUSR | S_IWUSR), S_IXUSR);
return (MonoBoolean)ret;
}
示例4: ves_icall_Mono_Security_Cryptography_KeyPairPersistence_ProtectMachine
MonoBoolean
ves_icall_Mono_Security_Cryptography_KeyPairPersistence_ProtectMachine (const gunichar2 *path, MonoError *error)
{
gboolean ret = FALSE;
/* read/write to owner, read to everyone else */
ret = Protect (path, (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH), (S_IXUSR | S_IXGRP | S_IXOTH));
return (MonoBoolean)ret;
}
示例5: NS_RUNTIMEABORT
// static
Shmem::SharedMemory*
Shmem::OpenExisting(IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead,
const IPC::Message& aDescriptor,
id_t* aId,
bool aProtect)
{
if (SHMEM_CREATED_MESSAGE_TYPE != aDescriptor.type())
NS_RUNTIMEABORT("expected 'shmem created' message");
void* iter = 0;
SharedMemory::SharedMemoryType type;
size_t size;
if (!ShmemCreated::ReadInfo(&aDescriptor, &iter, aId, &size, &type))
return 0;
SharedMemory* segment = 0;
size_t pageSize = SharedMemory::SystemPageSize();
// |2*pageSize| is for the front and back sentinels
size_t segmentSize = SharedMemory::PageAlignedSize(size + 2*pageSize);
if (SharedMemory::TYPE_BASIC == type) {
SharedMemoryBasic::Handle handle;
if (!ShmemCreated::ReadHandle(&aDescriptor, &iter, &handle))
return 0;
if (!SharedMemoryBasic::IsHandleValid(handle))
NS_RUNTIMEABORT("trying to open invalid handle");
segment = CreateSegment(segmentSize, handle);
}
#ifdef MOZ_HAVE_SHAREDMEMORYSYSV
else if (SharedMemory::TYPE_SYSV == type) {
SharedMemorySysV::Handle handle;
if (!ShmemCreated::ReadHandle(&aDescriptor, &iter, &handle))
return 0;
if (!SharedMemorySysV::IsHandleValid(handle))
NS_RUNTIMEABORT("trying to open invalid handle");
segment = CreateSegment(segmentSize, handle);
}
#endif
else {
NS_RUNTIMEABORT("unknown shmem type");
}
if (!segment)
return 0;
// The caller of this function may not know whether the segment is
// unsafe or not
Header* header = GetHeader(segment);
if (!header->mUnsafe && aProtect)
Protect(segment);
return segment;
}
示例6: sqrt
quad_float sqrt(const quad_float& y) {
if (y.hi < 0.0)
ArithmeticError("quad_float: square root of negative number");
if (y.hi == 0.0) return quad_float(0.0,0.0);
double c;
c = sqrt(y.hi);
ForceToMem(&c); // This is fairly paranoid, but it doesn't cost too much.
START_FIX
DOUBLE p,q,hx,tx,u,uu,cc;
DOUBLE t1;
p = Protect(NTL_QUAD_FLOAT_SPLIT*c);
hx = (c-p);
hx = hx+p;
tx = c-hx;
p = Protect(hx*hx);
q = Protect(hx*tx);
q = q+q;
u = p+q;
uu = p-u;
uu = uu+q;
t1 = Protect(tx*tx);
uu = uu+t1;
cc = y.hi-u;
cc = cc-uu;
cc = cc+y.lo;
t1 = c+c;
cc = cc/t1;
hx = c+cc;
tx = c-hx;
tx = tx+cc;
END_FIX
return quad_float(hx, tx);
}
示例7: ves_icall_Mono_Security_Cryptography_KeyPairPersistence_ProtectMachine
MonoBoolean
ves_icall_Mono_Security_Cryptography_KeyPairPersistence_ProtectMachine (MonoString *path)
{
gboolean ret = FALSE;
/* read/write to owner, read to everyone else */
#ifdef HOST_WIN32
ret = ProtectMachine (mono_string_chars (path));
#else
ret = Protect (path, (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH), (S_IXUSR | S_IXGRP | S_IXOTH));
#endif
return ret;
}
示例8: ves_icall_Mono_Security_Cryptography_KeyPairPersistence_ProtectUser
MonoBoolean
ves_icall_Mono_Security_Cryptography_KeyPairPersistence_ProtectUser (MonoString *path)
{
gboolean ret = FALSE;
/* read/write to user, no access to everyone else */
#ifdef HOST_WIN32
ret = ProtectUser (mono_string_chars (path));
#else
ret = Protect (path, (S_IRUSR | S_IWUSR), S_IXUSR);
#endif
return ret;
}
示例9: NS_ASSERTION
// static
already_AddRefed<Shmem::SharedMemory>
Shmem::Alloc(IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead,
size_t aNBytes,
SharedMemoryType aType,
bool aUnsafe,
bool aProtect)
{
NS_ASSERTION(aNBytes <= UINT32_MAX, "Will truncate shmem segment size!");
MOZ_ASSERT(!aProtect || !aUnsafe, "protect => !unsafe");
size_t pageSize = SharedMemory::SystemPageSize();
nsRefPtr<SharedMemory> segment;
// |2*pageSize| is for the front and back sentinel
size_t segmentSize = SharedMemory::PageAlignedSize(aNBytes + 2*pageSize);
if (aType == SharedMemory::TYPE_BASIC)
segment = CreateSegment(segmentSize, SharedMemoryBasic::NULLHandle());
#ifdef MOZ_HAVE_SHAREDMEMORYSYSV
else if (aType == SharedMemory::TYPE_SYSV)
segment = CreateSegment(segmentSize, SharedMemorySysV::NULLHandle());
#endif
else {
NS_ERROR("unknown shmem type");
return nullptr;
}
if (!segment)
return nullptr;
Header* header;
char *frontSentinel;
char *data;
char *backSentinel;
GetSections(segment, &header, &frontSentinel, &data, &backSentinel);
// initialize the segment with Shmem-internal information
// NB: this can't be a static assert because technically pageSize
// isn't known at compile time, event though in practice it's always
// going to be 4KiB
MOZ_ASSERT(sizeof(Header) <= pageSize,
"Shmem::Header has gotten too big");
memcpy(header->mMagic, sMagic, sizeof(sMagic));
header->mSize = static_cast<uint32_t>(aNBytes);
header->mUnsafe = aUnsafe;
if (aProtect)
Protect(segment);
return segment.forget();
}
示例10: VALIDATE_NOT_NULL
ECode CVpnService::Protect(
/* [in] */ IDatagramSocket* socket,
/* [out] */ Boolean* reault)
{
VALIDATE_NOT_NULL(reault);
AutoPtr<IFileDescriptor> descriptor;
socket->GetFileDescriptor((IFileDescriptor**)&descriptor);
Int32 fd;
descriptor->GetDescriptor(&fd);
return Protect(fd, result);
}
示例11: Protect
quad_float& operator /=(quad_float& x, const quad_float& y ) {
START_FIX
DOUBLE hc, tc, hy, ty, C, c, U, u;
DOUBLE t1;
C = x.hi/y.hi;
c = Protect(NTL_QUAD_FLOAT_SPLIT*C);
hc = c-C;
u = Protect(NTL_QUAD_FLOAT_SPLIT*y.hi);
hc = c-hc;
tc = C-hc;
hy = u-y.hi;
U = Protect(C * y.hi);
hy = u-hy;
ty = y.hi-hy;
// u = (((hc*hy-U)+hc*ty)+tc*hy)+tc*ty;
u = Protect(hc*hy);
u = u-U;
t1 = Protect(hc*ty);
u = u+t1;
t1 = Protect(tc*hy);
u = u+t1;
t1 = Protect(tc*ty);
u = u+t1;
// c = ((((x.hi-U)-u)+x.lo)-C*y.lo)/y.hi;
c = x.hi-U;
c = c-u;
c = c+x.lo;
t1 = Protect(C*y.lo);
c = c - t1;
c = c/y.hi;
hy = C+c;
ty = C-hy;
ty = ty+c;
x.hi = hy;
x.lo = ty;
END_FIX
return x;
}
示例12: vm_mini_vm
void vm_mini_vm(lua_State *L, LClosure *cl, int count, int pseudo_ops_offset) {
const Instruction *pc;
StkId base;
TValue *k;
k = cl->p->k;
pc = cl->p->code + pseudo_ops_offset;
base = L->base;
/* process next 'count' ops */
for (; count > 0; count--) {
const Instruction i = *pc++;
StkId ra = RA(i);
lua_assert(base == L->base && L->base == L->ci->base);
lua_assert(base <= L->top && L->top <= L->stack + L->stacksize);
lua_assert(L->top == L->ci->top || luaG_checkopenop(i));
switch (GET_OPCODE(i)) {
case OP_MOVE: {
setobjs2s(L, ra, RB(i));
continue;
}
case OP_LOADK: {
setobj2s(L, ra, KBx(i));
continue;
}
case OP_GETUPVAL: {
int b = GETARG_B(i);
setobj2s(L, ra, cl->upvals[b]->v);
continue;
}
case OP_SETUPVAL: {
UpVal *uv = cl->upvals[GETARG_B(i)];
setobj(L, uv->v, ra);
luaC_barrier(L, uv, ra);
continue;
}
case OP_SETTABLE: {
Protect(luaV_settable(L, ra, RKB(i), RKC(i)));
continue;
}
default: {
luaG_runerror(L, "Bad opcode: opcode=%d", GET_OPCODE(i));
continue;
}
}
}
}
示例13: AssertInvariants
void
Shmem::RevokeRights(IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead)
{
AssertInvariants();
size_t pageSize = SharedMemory::SystemPageSize();
Header* header = GetHeader(mSegment);
// Open this up for reading temporarily
mSegment->Protect(reinterpret_cast<char*>(header), pageSize, RightsRead);
if (!header->mUnsafe) {
Protect(mSegment);
} else {
mSegment->Protect(reinterpret_cast<char*>(header), pageSize, RightsNone);
}
}
示例14: luaV_execute
void luaV_execute (lua_State *L) {
CallInfo *ci = L->ci;
LClosure *cl;
TValue *k;
StkId base;
newframe: /* reentry point when frame changes (call/return) */
lua_assert(ci == L->ci);
cl = clLvalue(ci->func);
k = cl->p->k;
base = ci->u.l.base;
//printf( "s:%p\n", ci->u.l.savedpc );
/* main loop of interpreter */
for (;;) {
Instruction i = *(ci->u.l.savedpc++);
StkId ra;
if ((L->hookmask & (LUA_MASKLINE | LUA_MASKCOUNT)) &&
(--L->hookcount == 0 || L->hookmask & LUA_MASKLINE)) {
Protect(traceexec(L));
}
/* warning!! several calls may realloc the stack and invalidate `ra' */
ra = RA(i);
lua_assert(base == ci->u.l.base);
lua_assert(base <= L->top && L->top < L->stack + L->stacksize);
// 命令出力
//printInst( ci->u.l.savedpc - 1 );
vmdispatch (GET_OPCODE(i)) {
vmcase(OP_MOVE,
setobjs2s(L, ra, RB(i));
)
vmcase(OP_LOADK,
TValue *rb = k + GETARG_Bx(i);
setobj2s(L, ra, rb);
)
vmcase(OP_LOADKX,
TValue *rb;
lua_assert(GET_OPCODE(*ci->u.l.savedpc) == OP_EXTRAARG);
rb = k + GETARG_Ax(*ci->u.l.savedpc++);
setobj2s(L, ra, rb);
)
示例15: vm_OP_TFORLOOP
int vm_OP_TFORLOOP(lua_State *L, int a, int c) {
TValue *base = L->base;
TValue *ra = base + a;
StkId cb = ra + 3; /* call base */
setobjs2s(L, cb+2, ra+2);
setobjs2s(L, cb+1, ra+1);
setobjs2s(L, cb, ra);
L->top = cb+3; /* func. + 2 args (state and index) */
Protect(luaD_call(L, cb, c));
L->top = L->ci->top;
cb = base + a + 3; /* previous call may change the stack */
if (!ttisnil(cb)) { /* continue loop? */
setobjs2s(L, cb-1, cb); /* save control variable */
dojump(GETARG_sBx(*L->savedpc));
return 1;
}
return 0;
}