예제 #1
0
void insertExpoMix(uint8_t expo, uint8_t idx)
{
  pauseMixerCalculations();
  if (expo) {
    ExpoData *expo = expoAddress(idx);
    memmove(expo+1, expo, (MAX_EXPOS-(idx+1))*sizeof(ExpoData));
    memclear(expo, sizeof(ExpoData));
    expo->srcRaw = (s_currCh > 4 ? MIXSRC_Rud - 1 + s_currCh : MIXSRC_Rud - 1 + channel_order(s_currCh));
    expo->curve.type = CURVE_REF_EXPO;
    expo->mode = 3; // pos&neg
    expo->chn = s_currCh - 1;
    expo->weight = 100;
  }
  else {
    MixData *mix = mixAddress(idx);
    memmove(mix+1, mix, (MAX_MIXERS-(idx+1))*sizeof(MixData));
    memclear(mix, sizeof(MixData));
    mix->destCh = s_currCh-1;
    mix->srcRaw = s_currCh;
    if (!isSourceAvailable(mix->srcRaw)) {
      mix->srcRaw = (s_currCh > 4 ? MIXSRC_Rud - 1 + s_currCh : MIXSRC_Rud - 1 + channel_order(s_currCh));
      while (!isSourceAvailable(mix->srcRaw)) {
        mix->srcRaw += 1;
      }
    }
    mix->weight = 100;
  }
  resumeMixerCalculations();
  eeDirty(EE_MODEL);
}
예제 #2
0
static	SessionData	*
NewSessionData(void)
{
	SessionData	*data;

ENTER_FUNC;
	data = New(SessionData);
	memclear(data,sizeof(SessionData));
	data->type = SESSION_TYPE_TERM;
	data->status = SESSION_STATUS_NORMAL;
	data->hdr = New(MessageHeader);
	memclear(data->hdr,sizeof(MessageHeader));
	data->hdr->command = APL_COMMAND_LINK;
	data->apsid = -1;
	data->spadata = NewNameHash();
	data->scrpool = NewNameHash();
	gettimeofday(&(data->create_time), NULL);
	gettimeofday(&(data->access_time), NULL);
	timerclear(&(data->process_time));
	timerclear(&(data->total_process_time));
	data->apidata = New(APIData);
	data->apidata->status = WFC_API_OK;
	data->apidata->rec = NewLBS();
	data->sysdbval = RecParseValueMem(SYSDBVAL_DEF,NULL);
	InitializeValue(data->sysdbval);
	data->count = 0;
	data->w.sp = 0;
LEAVE_FUNC;
	return	(data);
}
예제 #3
0
static int decrypt(void *ctx,char *name,char *file,void *in,int ilen,void *out)
{
	int len;
	int rem;
	int r=NOUSER;
	struct spwd *sp;
#if OPENSSL_VERSION_NUMBER >= 0x1010000fL
	EVP_CIPHER_CTX *etx;
#else
	EVP_CIPHER_CTX etx;
#endif
	unsigned char bfr[512];
	unsigned char key[32];
	unsigned char iv[32];

	if(!(sp=getspnam(name)))goto err1;

	len=sizeof(bfr);
	if((r=sign(ctx,file,sp->sp_pwdp,strlen(sp->sp_pwdp),bfr,&len)))
		goto err2;

	r=CRYPTOFAIL;
#if OPENSSL_VERSION_NUMBER >= 0x1010000fL
	etx=EVP_CIPHER_CTX_new();
	EVP_BytesToKey(EVP_aes_256_cfb(),EVP_sha256(),NULL,bfr,len,1,key,iv);
	EVP_DecryptInit_ex(etx,EVP_aes_256_cfb(),NULL,key,iv);
	len=ilen;
	if(!EVP_DecryptUpdate(etx,out,&len,in,ilen))goto err3;
	rem=ilen-len;
	if(!EVP_DecryptFinal_ex(etx,out+len,&rem))goto err3;
	r=OK;

err3:	EVP_CIPHER_CTX_free(etx);
#else
	EVP_CIPHER_CTX_init(&etx);
	EVP_BytesToKey(EVP_aes_256_cfb(),EVP_sha256(),NULL,bfr,len,1,key,iv);
	EVP_DecryptInit_ex(&etx,EVP_aes_256_cfb(),NULL,key,iv);
	len=ilen;
	if(!EVP_DecryptUpdate(&etx,out,&len,in,ilen))goto err3;
	rem=ilen-len;
	if(!EVP_DecryptFinal_ex(&etx,out+len,&rem))goto err3;
	r=OK;

err3:	EVP_CIPHER_CTX_cleanup(&etx);
#endif
	memclear(key,0,sizeof(key));
	memclear(iv,0,sizeof(iv));
err2:	memclear(bfr,0,sizeof(bfr));
	memclear(sp->sp_pwdp,0,strlen(sp->sp_pwdp));
err1:	return r;
}
예제 #4
0
MixData* setDest(uint8_t dch, uint8_t src, bool clear=false)
{
  uint8_t i = 0;
  MixData * mix;

  while (1) {
    mix = mixAddress(i);
    if (mix->srcRaw && mix->destCh <= dch) {
      if (clear && mix->destCh == dch) {
        deleteExpoMix(0, i);
      }
      else {
        if (++i==MAX_MIXERS) {
          // TODO should return null pointer but needs to be tested then
          mix = mixAddress(0);
          break;
        }
      }
    }
    else {
      break;
    }
  }

  memmove(mix+1, mix, (MAX_MIXERS-(i+1))*sizeof(MixData) );
  memclear(mix, sizeof(MixData));
  mix->destCh = dch;
  mix->srcRaw = src;
  mix->weight = 100;
  return mix;
}
예제 #5
0
drm_public int drmModeAddFB2WithModifiers(int fd, uint32_t width,
		uint32_t height, uint32_t pixel_format, const uint32_t bo_handles[4],
		const uint32_t pitches[4], const uint32_t offsets[4],
		const uint64_t modifier[4], uint32_t *buf_id, uint32_t flags)
{
	struct drm_mode_fb_cmd2 f;
	int ret;

	memclear(f);
	f.width  = width;
	f.height = height;
	f.pixel_format = pixel_format;
	f.flags = flags;
	memcpy(f.handles, bo_handles, 4 * sizeof(bo_handles[0]));
	memcpy(f.pitches, pitches, 4 * sizeof(pitches[0]));
	memcpy(f.offsets, offsets, 4 * sizeof(offsets[0]));
	if (modifier)
		memcpy(f.modifier, modifier, 4 * sizeof(modifier[0]));

	if ((ret = DRM_IOCTL(fd, DRM_IOCTL_MODE_ADDFB2, &f)))
		return ret;

	*buf_id = f.fb_id;
	return 0;
}
예제 #6
0
drmModeObjectPropertiesPtr drmModeObjectGetProperties(int fd,
        uint32_t object_id,
        uint32_t object_type)
{
    struct drm_mode_obj_get_properties properties;
    drmModeObjectPropertiesPtr ret = NULL;
    uint32_t count;

retry:
    memclear(properties);
    properties.obj_id = object_id;
    properties.obj_type = object_type;

    if (drmIoctl(fd, DRM_IOCTL_MODE_OBJ_GETPROPERTIES, &properties))
        return 0;

    count = properties.count_props;

    if (count) {
        properties.props_ptr = VOID2U64(drmMalloc(count *
                                        sizeof(uint32_t)));
        if (!properties.props_ptr)
            goto err_allocs;
        properties.prop_values_ptr = VOID2U64(drmMalloc(count *
                                              sizeof(uint64_t)));
        if (!properties.prop_values_ptr)
            goto err_allocs;
    }

    if (drmIoctl(fd, DRM_IOCTL_MODE_OBJ_GETPROPERTIES, &properties))
        goto err_allocs;

    if (count < properties.count_props) {
        drmFree(U642VOID(properties.props_ptr));
        drmFree(U642VOID(properties.prop_values_ptr));
        goto retry;
    }
    count = properties.count_props;

    ret = drmMalloc(sizeof(*ret));
    if (!ret)
        goto err_allocs;

    ret->count_props = count;
    ret->props = drmAllocCpy(U642VOID(properties.props_ptr),
                             count, sizeof(uint32_t));
    ret->prop_values = drmAllocCpy(U642VOID(properties.prop_values_ptr),
                                   count, sizeof(uint64_t));
    if (ret->count_props && (!ret->props || !ret->prop_values)) {
        drmFree(ret->props);
        drmFree(ret->prop_values);
        drmFree(ret);
        ret = NULL;
    }

err_allocs:
    drmFree(U642VOID(properties.props_ptr));
    drmFree(U642VOID(properties.prop_values_ptr));
    return ret;
}
예제 #7
0
void eeDeleteModel(uint8_t index)
{
  eeCheck(true);
  memclear(&modelHeaders[index], sizeof(ModelHeader));
  writeFile(index+1, (uint8_t *)&g_model, 0);
  eepromWriteWait();
}
예제 #8
0
/*
 * Read runlength (RLE) compressed bytes into buf.
 */
uint16_t RlcFile::readRlc(uint8_t *buf, uint16_t i_len)
{
  uint16_t i = 0;
  for( ; 1; ) {
    uint8_t ln = min<uint16_t>(m_zeroes, i_len-i);
    memclear(&buf[i], ln);
    i        += ln;
    m_zeroes -= ln;
    if (m_zeroes) break;

    ln = min<uint16_t>(m_bRlc, i_len-i);
    uint8_t lr = read(&buf[i], ln);
    i        += lr ;
    m_bRlc   -= lr;
    if(m_bRlc) break;

    if (read(&m_bRlc, 1) !=1) break; // read how many bytes to read

    assert(m_bRlc & 0x7f);

    if (m_bRlc&0x80) { // if contains high byte
      m_zeroes  =(m_bRlc>>4) & 0x7;
      m_bRlc    = m_bRlc & 0x0f;
    }
    else if(m_bRlc&0x40) {
예제 #9
0
drmModePropertyBlobPtr drmModeGetPropertyBlob(int fd, uint32_t blob_id)
{
    struct drm_mode_get_blob blob;
    drmModePropertyBlobPtr r;

    memclear(blob);
    blob.blob_id = blob_id;

    if (drmIoctl(fd, DRM_IOCTL_MODE_GETPROPBLOB, &blob))
        return NULL;

    if (blob.length)
        blob.data = VOID2U64(drmMalloc(blob.length));

    if (drmIoctl(fd, DRM_IOCTL_MODE_GETPROPBLOB, &blob)) {
        r = NULL;
        goto err_allocs;
    }

    if (!(r = drmMalloc(sizeof(*r))))
        goto err_allocs;

    r->id = blob.blob_id;
    r->length = blob.length;
    r->data = drmAllocCpy(U642VOID(blob.data), 1, blob.length);

err_allocs:
    drmFree(U642VOID(blob.data));
    return r;
}
예제 #10
0
static int cardfingerprint(void *ctx,char *file,void *out)
{
	int r=NOCARD;
	int len;
	EVP_PKEY *key;
	RSA *rsa=NULL;
	EC_KEY *ec=NULL;
	ENGINE *e=(ENGINE *)ctx;
	unsigned char bfr[2048];
	unsigned char *p=bfr;

	resume_engine(e,engbits);

	if(!(key=ENGINE_load_public_key(e,file,NULL,NULL)))goto err1;

	r=CRYPTOFAIL;

#if OPENSSL_VERSION_NUMBER >= 0x1010000fL
	if(EVP_PKEY_get0_RSA(key))
	{
		if(!(rsa=EVP_PKEY_get1_RSA(key)))goto err2;
		if((len=i2d_RSA_PUBKEY(rsa,NULL))>sizeof(bfr))goto err3;
		if(i2d_RSA_PUBKEY(rsa,&p)!=len)goto err3;
	}
	else if(EVP_PKEY_get0_EC_KEY(key))
	{
		if(!(ec=EVP_PKEY_get1_EC_KEY(key)))goto err2;
		if((len=i2d_EC_PUBKEY(ec,NULL))>sizeof(bfr))goto err3;
		if(i2d_EC_PUBKEY(ec,&p)!=len)goto err3;
	}
	else goto err2;
#else
	switch(EVP_PKEY_type(key->type))
	{
	case EVP_PKEY_RSA:
		if(!(rsa=EVP_PKEY_get1_RSA(key)))goto err2;
		if((len=i2d_RSA_PUBKEY(rsa,NULL))>sizeof(bfr))goto err3;
		if(i2d_RSA_PUBKEY(rsa,&p)!=len)goto err3;
		break;

	case EVP_PKEY_EC:
		if(!(ec=EVP_PKEY_get1_EC_KEY(key)))goto err2;
		if((len=i2d_EC_PUBKEY(ec,NULL))>sizeof(bfr))goto err3;
		if(i2d_EC_PUBKEY(ec,&p)!=len)goto err3;
		break;

	default:goto err2;
	}
#endif

	if(out)sha256(bfr,len,out);
	r=OK;

err3:	if(rsa)RSA_free(rsa);
	if(ec)EC_KEY_free(ec);
	memclear(bfr,0,sizeof(bfr));
err2:	EVP_PKEY_free(key);
err1:	suspend_engine(e,&engbits);
	return r;
}
예제 #11
0
int drmModeSetPlane(int fd, uint32_t plane_id, uint32_t crtc_id,
                    uint32_t fb_id, uint32_t flags,
                    int32_t crtc_x, int32_t crtc_y,
                    uint32_t crtc_w, uint32_t crtc_h,
                    uint32_t src_x, uint32_t src_y,
                    uint32_t src_w, uint32_t src_h)

{
    struct drm_mode_set_plane s;

    memclear(s);
    s.plane_id = plane_id;
    s.crtc_id = crtc_id;
    s.fb_id = fb_id;
    s.flags = flags;
    s.crtc_x = crtc_x;
    s.crtc_y = crtc_y;
    s.crtc_w = crtc_w;
    s.crtc_h = crtc_h;
    s.src_x = src_x;
    s.src_y = src_y;
    s.src_w = src_w;
    s.src_h = src_h;

    return DRM_IOCTL(fd, DRM_IOCTL_MODE_SETPLANE, &s);
}
예제 #12
0
drmModeCrtcPtr drmModeGetCrtc(int fd, uint32_t crtcId)
{
    struct drm_mode_crtc crtc;
    drmModeCrtcPtr r;

    memclear(crtc);
    crtc.crtc_id = crtcId;

    if (drmIoctl(fd, DRM_IOCTL_MODE_GETCRTC, &crtc))
        return 0;

    /*
     * return
     */

    if (!(r = drmMalloc(sizeof(*r))))
        return 0;

    r->crtc_id         = crtc.crtc_id;
    r->x               = crtc.x;
    r->y               = crtc.y;
    r->mode_valid      = crtc.mode_valid;
    if (r->mode_valid) {
        memcpy(&r->mode, &crtc.mode, sizeof(struct drm_mode_modeinfo));
        r->width = crtc.mode.hdisplay;
        r->height = crtc.mode.vdisplay;
    }
    r->buffer_id       = crtc.fb_id;
    r->gamma_size      = crtc.gamma_size;
    return r;
}
예제 #13
0
void *calloc(size_t num,size_t size) {
	void *a = malloc(num * size);
	if(a == NULL)
		return NULL;

	memclear(a,num * size);
	return a;
}
예제 #14
0
void EFile::rm(uint8_t i_fileId)
{
  blkid_t i = eeFs.files[i_fileId].startBlk;
  memclear(&eeFs.files[i_fileId], sizeof(eeFs.files[i_fileId]));
  ENABLE_SYNC_WRITE(true);
  EeFsFlushDirEnt(i_fileId);
  if (i) EeFsFree(i); //chain in
  ENABLE_SYNC_WRITE(false);
}
예제 #15
0
int drmModeDetachMode(int fd, uint32_t connector_id, drmModeModeInfoPtr mode_info)
{
    struct drm_mode_mode_cmd res;

    memclear(res);
    memcpy(&res.mode, mode_info, sizeof(struct drm_mode_modeinfo));
    res.connector_id = connector_id;

    return DRM_IOCTL(fd, DRM_IOCTL_MODE_DETACHMODE, &res);
}
예제 #16
0
void eeLoadModelName(uint8_t id, char *name)
{
  memclear(name, sizeof(g_model.header.name));
  if (id < MAX_MODELS) {
    id += 1;
    if (File_system[id].size > sizeof(g_model.header.name) ) {
      read32_eeprom_data((File_system[id].block_no << 12)+8, (uint8_t *)name, sizeof(g_model.header.name));
    }
  }
}
예제 #17
0
void eeLoadModelHeader(uint8_t id, ModelHeader *header)
{
  memclear(header, sizeof(ModelHeader));
  if (id < MAX_MODELS) {
    id += 1;
    if (File_system[id].size > sizeof(ModelHeader)) {
      read32_eeprom_data((File_system[id].block_no << 12)+8, (uint8_t *)header, sizeof(ModelHeader));
    }
  }
}
예제 #18
0
void deleteExpoMix(uint8_t expo, uint8_t idx)
{
  pauseMixerCalculations();
  if (expo) {
    ExpoData *expo = expoAddress(idx);
    int input = expo->chn;
    memmove(expo, expo+1, (MAX_EXPOS-(idx+1))*sizeof(ExpoData));
    memclear(&g_model.expoData[MAX_EXPOS-1], sizeof(ExpoData));
    if (!isInputAvailable(input)) {
      memclear(&g_model.inputNames[input], LEN_INPUT_NAME);
    }
  }
  else {
    MixData *mix = mixAddress(idx);
    memmove(mix, mix+1, (MAX_MIXERS-(idx+1))*sizeof(MixData));
    memclear(&g_model.mixData[MAX_MIXERS-1], sizeof(MixData));
  }
  resumeMixerCalculations();
  eeDirty(EE_MODEL);
}
예제 #19
0
drmModePropertyPtr drmModeGetProperty(int fd, uint32_t property_id)
{
    struct drm_mode_get_property prop;
    drmModePropertyPtr r;

    memclear(prop);
    prop.prop_id = property_id;

    if (drmIoctl(fd, DRM_IOCTL_MODE_GETPROPERTY, &prop))
        return 0;

    if (prop.count_values)
        prop.values_ptr = VOID2U64(drmMalloc(prop.count_values * sizeof(uint64_t)));

    if (prop.count_enum_blobs && (prop.flags & (DRM_MODE_PROP_ENUM | DRM_MODE_PROP_BITMASK)))
        prop.enum_blob_ptr = VOID2U64(drmMalloc(prop.count_enum_blobs * sizeof(struct drm_mode_property_enum)));

    if (prop.count_enum_blobs && (prop.flags & DRM_MODE_PROP_BLOB)) {
        prop.values_ptr = VOID2U64(drmMalloc(prop.count_enum_blobs * sizeof(uint32_t)));
        prop.enum_blob_ptr = VOID2U64(drmMalloc(prop.count_enum_blobs * sizeof(uint32_t)));
    }

    if (drmIoctl(fd, DRM_IOCTL_MODE_GETPROPERTY, &prop)) {
        r = NULL;
        goto err_allocs;
    }

    if (!(r = drmMalloc(sizeof(*r))))
        return NULL;

    r->prop_id = prop.prop_id;
    r->count_values = prop.count_values;

    r->flags = prop.flags;
    if (prop.count_values)
        r->values = drmAllocCpy(U642VOID(prop.values_ptr), prop.count_values, sizeof(uint64_t));
    if (prop.flags & (DRM_MODE_PROP_ENUM | DRM_MODE_PROP_BITMASK)) {
        r->count_enums = prop.count_enum_blobs;
        r->enums = drmAllocCpy(U642VOID(prop.enum_blob_ptr), prop.count_enum_blobs, sizeof(struct drm_mode_property_enum));
    } else if (prop.flags & DRM_MODE_PROP_BLOB) {
        r->values = drmAllocCpy(U642VOID(prop.values_ptr), prop.count_enum_blobs, sizeof(uint32_t));
        r->blob_ids = drmAllocCpy(U642VOID(prop.enum_blob_ptr), prop.count_enum_blobs, sizeof(uint32_t));
        r->count_blobs = prop.count_enum_blobs;
    }
    strncpy(r->name, prop.name, DRM_PROP_NAME_LEN);
    r->name[DRM_PROP_NAME_LEN-1] = 0;

err_allocs:
    drmFree(U642VOID(prop.values_ptr));
    drmFree(U642VOID(prop.enum_blob_ptr));

    return r;
}
예제 #20
0
int drmModeConnectorSetProperty(int fd, uint32_t connector_id, uint32_t property_id,
                                uint64_t value)
{
    struct drm_mode_connector_set_property osp;

    memclear(osp);
    osp.connector_id = connector_id;
    osp.prop_id = property_id;
    osp.value = value;

    return DRM_IOCTL(fd, DRM_IOCTL_MODE_SETPROPERTY, &osp);
}
예제 #21
0
int drmModeMoveCursor(int fd, uint32_t crtcId, int x, int y)
{
    struct drm_mode_cursor arg;

    memclear(arg);
    arg.flags = DRM_MODE_CURSOR_MOVE;
    arg.crtc_id = crtcId;
    arg.x = x;
    arg.y = y;

    return DRM_IOCTL(fd, DRM_IOCTL_MODE_CURSOR, &arg);
}
예제 #22
0
int drmModeDirtyFB(int fd, uint32_t bufferId,
                   drmModeClipPtr clips, uint32_t num_clips)
{
    struct drm_mode_fb_dirty_cmd dirty;

    memclear(dirty);
    dirty.fb_id = bufferId;
    dirty.clips_ptr = VOID2U64(clips);
    dirty.num_clips = num_clips;

    return DRM_IOCTL(fd, DRM_IOCTL_MODE_DIRTYFB, &dirty);
}
예제 #23
0
파일: brw_bufmgr.c 프로젝트: ndesh26/Mesa
int
brw_bo_madvise(struct brw_bo *bo, int state)
{
   struct drm_i915_gem_madvise madv;

   memclear(madv);
   madv.handle = bo->gem_handle;
   madv.madv = state;
   madv.retained = 1;
   drmIoctl(bo->bufmgr->fd, DRM_IOCTL_I915_GEM_MADVISE, &madv);

   return madv.retained;
}
예제 #24
0
int drmModePageFlip(int fd, uint32_t crtc_id, uint32_t fb_id,
                    uint32_t flags, void *user_data)
{
    struct drm_mode_crtc_page_flip flip;

    memclear(flip);
    flip.fb_id = fb_id;
    flip.crtc_id = crtc_id;
    flip.user_data = VOID2U64(user_data);
    flip.flags = flags;

    return DRM_IOCTL(fd, DRM_IOCTL_MODE_PAGE_FLIP, &flip);
}
예제 #25
0
int drmModeObjectSetProperty(int fd, uint32_t object_id, uint32_t object_type,
                             uint32_t property_id, uint64_t value)
{
    struct drm_mode_obj_set_property prop;

    memclear(prop);
    prop.value = value;
    prop.prop_id = property_id;
    prop.obj_id = object_id;
    prop.obj_type = object_type;

    return DRM_IOCTL(fd, DRM_IOCTL_MODE_OBJ_SETPROPERTY, &prop);
}
예제 #26
0
int drmModeSetCursor(int fd, uint32_t crtcId, uint32_t bo_handle, uint32_t width, uint32_t height)
{
    struct drm_mode_cursor arg;

    memclear(arg);
    arg.flags = DRM_MODE_CURSOR_BO;
    arg.crtc_id = crtcId;
    arg.width = width;
    arg.height = height;
    arg.handle = bo_handle;

    return DRM_IOCTL(fd, DRM_IOCTL_MODE_CURSOR, &arg);
}
예제 #27
0
파일: socket.c 프로젝트: montsuqi/panda
extern int BindIP_Multi_Listen(char *port, int back, int *soc) {
  int i;
  int rc;
  int one;
  struct addrinfo *info, hints, *head;

  memclear(&hints, sizeof(struct addrinfo));
  hints.ai_family = AF_UNSPEC;
  hints.ai_socktype = SOCK_STREAM;
  hints.ai_flags = AI_PASSIVE;
  if ((rc = getaddrinfo(NULL, port, &hints, &head)) != 0) {
    Error("error resolv %s [%s]", gai_strerror(rc), port);
  }
  i = 0;
  for (info = head; info != NULL; info = info->ai_next) {
    dbgprintf("family   = %d\n", info->ai_family);
    dbgprintf("socktype = %d\n", info->ai_socktype);
    dbgprintf("protocol = %d\n", info->ai_protocol);
    if ((soc[i] = socket(info->ai_family, info->ai_socktype,
                         info->ai_protocol)) == -1) {
      dbgprintf("error socket[%d]: %s", info->ai_family, strerror(errno));
      close(soc[i]);
      continue;
    }
#ifdef IPV6_V6ONLY
    if (info->ai_family == AF_INET6) {
      one = 1;
      if (setsockopt(soc[i], IPPROTO_IPV6, IPV6_V6ONLY, (void *)&one,
                     sizeof(one)) < 0) {
        Warning("IPV6_V6ONLY: %s", strerror(errno))
      }
    }
#endif
    one = 1;
    if (setsockopt(soc[i], SOL_SOCKET, SO_REUSEADDR, (void *)&one,
                   sizeof(one)) < 0) {
      Warning("SO_REUSEADDR[%d]: %s", info->ai_family, strerror(errno))
    }
    if (bind(soc[i], info->ai_addr, info->ai_addrlen) < 0) {
      dbgprintf("error bind[%d]: %s", info->ai_family, strerror(errno));
      close(soc[i]);
      continue;
    }
    if (listen(soc[i], back) < 0) {
      dbgprintf("error listen[%d]: %s", info->ai_family, strerror(errno));
      close(soc[i]);
      continue;
    }
    i++;
  }
예제 #28
0
drmModePlanePtr drmModeGetPlane(int fd, uint32_t plane_id)
{
    struct drm_mode_get_plane ovr, counts;
    drmModePlanePtr r = 0;

retry:
    memclear(ovr);
    ovr.plane_id = plane_id;
    if (drmIoctl(fd, DRM_IOCTL_MODE_GETPLANE, &ovr))
        return 0;

    counts = ovr;

    if (ovr.count_format_types) {
        ovr.format_type_ptr = VOID2U64(drmMalloc(ovr.count_format_types *
                                       sizeof(uint32_t)));
        if (!ovr.format_type_ptr)
            goto err_allocs;
    }

    if (drmIoctl(fd, DRM_IOCTL_MODE_GETPLANE, &ovr))
        goto err_allocs;

    if (counts.count_format_types < ovr.count_format_types) {
        drmFree(U642VOID(ovr.format_type_ptr));
        goto retry;
    }

    if (!(r = drmMalloc(sizeof(*r))))
        goto err_allocs;

    r->count_formats = ovr.count_format_types;
    r->plane_id = ovr.plane_id;
    r->crtc_id = ovr.crtc_id;
    r->fb_id = ovr.fb_id;
    r->possible_crtcs = ovr.possible_crtcs;
    r->gamma_size = ovr.gamma_size;
    r->formats = drmAllocCpy(U642VOID(ovr.format_type_ptr),
                             ovr.count_format_types, sizeof(uint32_t));
    if (ovr.count_format_types && !r->formats) {
        drmFree(r->formats);
        drmFree(r);
        r = 0;
    }

err_allocs:
    drmFree(U642VOID(ovr.format_type_ptr));

    return r;
}
예제 #29
0
int drmModeCrtcSetGamma(int fd, uint32_t crtc_id, uint32_t size,
                        uint16_t *red, uint16_t *green, uint16_t *blue)
{
    struct drm_mode_crtc_lut l;

    memclear(l);
    l.crtc_id = crtc_id;
    l.gamma_size = size;
    l.red = VOID2U64(red);
    l.green = VOID2U64(green);
    l.blue = VOID2U64(blue);

    return DRM_IOCTL(fd, DRM_IOCTL_MODE_SETGAMMA, &l);
}
예제 #30
0
파일: getset.c 프로젝트: ogochan/libmondai
extern	struct	tm
ValueToDate(
	ValueStruct	*val)
{
	struct	tm	ret;
	Fixed	*xval;
	char	*str;

	memclear(&ret,sizeof(struct tm));
	if		(  val  ==  NULL  ) {
	} else
	switch	(ValueType(val)) {
	  case	GL_TYPE_CHAR:
	  case	GL_TYPE_VARCHAR:
	  case	GL_TYPE_TEXT:
	  case	GL_TYPE_SYMBOL:
		str = ValueString(val);
		ret.tm_year = StrToInt(str,4);		str += 4;
		ret.tm_mon = StrToInt(str,2) - 1;	str += 2;
		ret.tm_mday = StrToInt(str,2);		str += 2;
		ret.tm_hour = 0;
		ret.tm_min = 0;
		ret.tm_sec = 0;
		mktime(&ret);
		break;
	  case	GL_TYPE_NUMBER:
		xval = &ValueFixed(val);
		str = xval->sval;
		ret.tm_year = StrToInt(str,4);		str += 4;
		ret.tm_mon = StrToInt(str,2) - 1;	str += 2;
		ret.tm_mday = StrToInt(str,2);		str += 2;
		ret.tm_hour = 0;
		ret.tm_min = 0;
		ret.tm_sec = 0;
		mktime(&ret);
		break;
	  case	GL_TYPE_TIMESTAMP:
	  case	GL_TYPE_DATE:
		memcpy(&ret,&ValueDateTime(val),sizeof(struct tm));
		ret.tm_hour = 0;
		ret.tm_min = 0;
		ret.tm_sec = 0;
		mktime(&ret);
		break;
	  default:
		break;
	}
	return	(ret);
}