vsp
memset(&vsp, 0, sizeof(vsp));
vsp.vsp_nmemranges = vcp.vcp_nmemranges;
memcpy(&vsp.vsp_memranges, &vcp.vcp_memranges,
sizeof(vsp.vsp_memranges));
vsp.vsp_vm_id = vcp.vcp_id;
if (ioctl(fd, VMM_IOC_SHAREMEM, &vsp) == -1)
for (i = 0; i < vsp.vsp_nmemranges; i++)
vcp.vcp_memranges[i].vmr_va = vsp.vsp_va[i];
for (i = 0; i < vsp.vsp_nmemranges; i++) {
vmr = &vsp.vsp_memranges[i];
(vsp.vsp_memranges[UPPER_MEM].vmr_va + off + i));
printf("%02x", *(uint8_t*)(vsp.vsp_memranges[LOW_MEM].vmr_va
struct vm_sharemem_params vsp;
#define timespecsub(tsp, usp, vsp) \
(vsp)->tv_sec = (tsp)->tv_sec - (usp)->tv_sec; \
(vsp)->tv_nsec = (tsp)->tv_nsec - (usp)->tv_nsec; \
if ((vsp)->tv_nsec < 0) { \
(vsp)->tv_sec--; \
(vsp)->tv_nsec += 1000000000L; \
#define timespecadd(tsp, usp, vsp) \
(vsp)->tv_sec = (tsp)->tv_sec + (usp)->tv_sec; \
(vsp)->tv_nsec = (tsp)->tv_nsec + (usp)->tv_nsec; \
if ((vsp)->tv_nsec >= 1000000000L) { \
(vsp)->tv_sec++; \
(vsp)->tv_nsec -= 1000000000L; \
#define timespecsub(tsp, usp, vsp) \
(vsp)->tv_sec = (tsp)->tv_sec - (usp)->tv_sec; \
(vsp)->tv_nsec = (tsp)->tv_nsec - (usp)->tv_nsec; \
if ((vsp)->tv_nsec < 0) { \
(vsp)->tv_sec--; \
(vsp)->tv_nsec += 1000000000L; \
#define timespecadd(tsp, usp, vsp) \
(vsp)->tv_sec = (tsp)->tv_sec + (usp)->tv_sec; \
(vsp)->tv_nsec = (tsp)->tv_nsec + (usp)->tv_nsec; \
if ((vsp)->tv_nsec >= 1000000000L) { \
(vsp)->tv_sec++; \
(vsp)->tv_nsec -= 1000000000L; \
uint8_t vsp;
vsp = hw_crtc_timing.flags.VSYNC_POSITIVE_POLARITY ? 0 : 0x80;
MSA_DATA_LANE_1, vsp | (hw_crtc_timing.v_sync_width >> 8),
reg |= (VSP(ni_pi->cac_weights->vsp) |
u32 vsp;
vm_share_mem(struct vm_sharemem_params *vsp, struct proc *p)
ret = vm_find(vsp->vsp_vm_id, &vm);
if (vm->vm_nmemranges != vsp->vsp_nmemranges)
dst = &vsp->vsp_memranges[i];
if (vsp->vsp_va[i] != 0)
dst = &vsp->vsp_memranges[i];
ret = uvm_map(&p->p_p->ps_vmspace->vm_map, &vsp->vsp_va[i],
vsp->vsp_va[i], vsp->vsp_va[i] + dst->vmr_size, 1);
dst = &vsp->vsp_memranges[i];
vsp->vsp_va[i], vsp->vsp_va[i] + dst->vmr_size);
#define timespecadd(tsp, usp, vsp) \
(vsp)->tv_sec = (tsp)->tv_sec + (usp)->tv_sec; \
(vsp)->tv_nsec = (tsp)->tv_nsec + (usp)->tv_nsec; \
if ((vsp)->tv_nsec >= 1000000000L) { \
(vsp)->tv_sec++; \
(vsp)->tv_nsec -= 1000000000L; \
#define timespecsub(tsp, usp, vsp) \
(vsp)->tv_sec = (tsp)->tv_sec - (usp)->tv_sec; \
(vsp)->tv_nsec = (tsp)->tv_nsec - (usp)->tv_nsec; \
if ((vsp)->tv_nsec < 0) { \
(vsp)->tv_sec--; \
(vsp)->tv_nsec += 1000000000L; \
RB_ENTRY(vsp) entry;
RB_HEAD(vsp_tree, vsp);
RB_PROTOTYPE(vsp_tree, vsp, entry, vspcmp);
struct vsp *vsp;
RB_FOREACH(vsp, vsp_tree, vsps) {
json_do_int("origin_as", vsp->asid);
for (i = 0; i < vsp->num_prefixes; i++) {
ip_addr_print(&vsp->prefixes[i].prefix,
vsp->prefixes[i].afi, buf, sizeof(buf));
json_do_int("expires", vsp->expires);
json_do_string("ta", taldescs[vsp->talid]);
insert_vsp(struct vsp *vsp, size_t idx, struct spl_pfx *pfx)
if (idx < vsp->num_prefixes)
memmove(vsp->prefixes + idx + 1, vsp->prefixes + idx,
(vsp->num_prefixes - idx) * sizeof(vsp->prefixes[0]));
vsp->prefixes[idx] = *pfx;
vsp->num_prefixes++;
struct vsp *vsp, *found;
if ((vsp = calloc(1, sizeof(*vsp))) == NULL)
vsp->asid = spl->asid;
vsp->talid = spl->talid;
vsp->expires = spl->expires;
vsp->repoid = repo_id(rp);
if ((found = RB_INSERT(vsp_tree, tree, vsp)) != NULL) {
if (found->expires < vsp->expires) {
found->expires = vsp->expires;
found->talid = vsp->talid;
found->repoid = vsp->repoid;
repo_stat_inc(rp, vsp->talid, RTYPE_SPL,
free(vsp);
vsp = found;
repo_stat_inc(rp, vsp->talid, RTYPE_SPL, STYPE_UNIQUE);
vsp->prefixes = reallocarray(vsp->prefixes,
vsp->num_prefixes + spl->num_prefixes, sizeof(vsp->prefixes[0]));
if (vsp->prefixes == NULL)
if (j == vsp->num_prefixes ||
&vsp->prefixes[j])) < 0) {
insert_vsp(vsp, j, &spl->prefixes[i]);
if (j < vsp->num_prefixes)
vspcmp(const struct vsp *a, const struct vsp *b)
RB_GENERATE(vsp_tree, vsp, entry, vspcmp);
struct vm_sharemem_params vsp;
memset(&vsp, 0, sizeof(vsp));
vsp.vsp_nmemranges = vm->vm_params.vmc_nmemranges;
vsp.vsp_vm_id = vm->vm_vmmid;
memcpy(&vsp.vsp_memranges, &vm->vm_params.vmc_memranges,
sizeof(vsp.vsp_memranges));
if (ioctl(vmm_fd, VMM_IOC_SHAREMEM, &vsp) == -1)
for (i = 0; i < vsp.vsp_nmemranges; i++)
vm->vm_params.vmc_memranges[i].vmr_va = vsp.vsp_va[i];