[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH 3/4] use one api for bit operation
Hi Florian, of course it is not from linux. It is implementation of linux-like bit operations from freeBSD which we ported a month ago to Unikraft. I will change a commit message a bit, to reduce the confusion. Florian Schmidt <Florian.Schmidt@xxxxxxxxx> writes: > Hi Yuri, > > On 10/05/2018 10:21 AM, Yuri Volchkov wrote: >> A port of linux bit operations has been introduced recently. So far >> both APIs were in use. Let's use only the linux one, for the sake of >> consistency. > > Wait. The "linux one" isn't from the Linux kernel, as in, under GPL, is it? > >> >> Signed-off-by: Yuri Volchkov <yuri.volchkov@xxxxxxxxx> >> --- >> lib/vfscore/fd.c | 4 ++-- >> plat/common/arm/time.c | 6 +++--- >> plat/kvm/irq.c | 6 +++--- >> plat/kvm/x86/tscclock.c | 6 +++--- >> plat/xen/events.c | 18 +++++++++--------- >> plat/xen/xenbus/xs_comms.c | 4 ++-- >> 6 files changed, 22 insertions(+), 22 deletions(-) >> >> diff --git a/lib/vfscore/fd.c b/lib/vfscore/fd.c >> index 07a69b5..6c22042 100644 >> --- a/lib/vfscore/fd.c >> +++ b/lib/vfscore/fd.c >> @@ -35,7 +35,7 @@ >> >> #include <string.h> >> #include <uk/essentials.h> >> -#include <uk/arch/atomic.h> >> +#include <uk/bitops.h> >> #include <uk/assert.h> >> #include <vfscore/file.h> >> #include <uk/plat/lcpu.h> >> @@ -78,7 +78,7 @@ void vfscore_put_fd(int fd) >> /* Currently it is not allowed to free std(in|out|err) */ >> UK_ASSERT(fd > 2); >> >> - ukarch_test_and_clr_bit(fd, &fdtable.bitmap); >> + __uk_clear_bit(fd, &fdtable.bitmap); >> } >> >> void vfscore_install_fd(int fd, struct vfscore_file *file) >> diff --git a/plat/common/arm/time.c b/plat/common/arm/time.c >> index 949fa74..f1df98d 100644 >> --- a/plat/common/arm/time.c >> +++ b/plat/common/arm/time.c >> @@ -172,7 +172,7 @@ static int generic_timer_init(void) >> return 0; >> } >> >> -long sched_have_pending_events; >> +unsigned long sched_have_pending_events; >> >> void time_block_until(__snsec until) >> { >> @@ -182,8 +182,8 @@ void time_block_until(__snsec until) >> * As we haven't support interrupt on Arm, so we just >> * use busy polling for now. >> */ >> - if (ukarch_test_and_clr_bit(0, &sched_have_pending_events)) >> - break; >> + if (__uk_test_and_clear_bit(0, &sched_have_pending_events)) >> + break; >> } >> } >> >> diff --git a/plat/kvm/irq.c b/plat/kvm/irq.c >> index e708069..0b734f6 100644 >> --- a/plat/kvm/irq.c >> +++ b/plat/kvm/irq.c >> @@ -34,7 +34,7 @@ >> #include <kvm/intctrl.h> >> #include <uk/assert.h> >> #include <errno.h> >> -#include <uk/arch/atomic.h> >> +#include <uk/bitops.h> >> >> static struct uk_alloc *allocator; >> >> @@ -75,7 +75,7 @@ int ukplat_irq_register(unsigned long irq, >> irq_handler_func_t func, void *arg) >> * TODO: This is a temporary solution used to identify non TSC clock >> * interrupts in order to stop waiting for interrupts with deadline. >> */ >> -extern long sched_have_pending_events; >> +extern unsigned long sched_have_pending_events; >> >> void _ukplat_irq_handle(unsigned long irq) >> { >> @@ -95,7 +95,7 @@ void _ukplat_irq_handle(unsigned long irq) >> * the halting loop, and let it take care of >> * that work. >> */ >> - ukarch_test_and_set_bit(0, &sched_have_pending_events); >> + __uk_test_and_set_bit(0, &sched_have_pending_events); >> >> if (h->func(h->arg) == 1) { >> handled = 1; >> diff --git a/plat/kvm/x86/tscclock.c b/plat/kvm/x86/tscclock.c >> index 4ef2179..f3fa55a 100644 >> --- a/plat/kvm/x86/tscclock.c >> +++ b/plat/kvm/x86/tscclock.c >> @@ -58,7 +58,7 @@ >> #include <uk/timeconv.h> >> #include <uk/print.h> >> #include <uk/assert.h> >> -#include <uk/arch/atomic.h> >> +#include <uk/bitops.h> >> >> #define NSEC_PER_SEC 1000000000ULL >> >> @@ -346,14 +346,14 @@ static void tscclock_cpu_block(__u64 until) >> ukplat_lcpu_halt_irq(); >> } >> >> -long sched_have_pending_events; >> +unsigned long sched_have_pending_events; >> >> void time_block_until(__snsec until) >> { >> while ((__snsec) ukplat_monotonic_clock() < until) { >> tscclock_cpu_block(until); >> >> - if (ukarch_test_and_clr_bit(0, &sched_have_pending_events)) >> + if (__uk_test_and_clear_bit(0, &sched_have_pending_events)) >> break; >> } >> } >> diff --git a/plat/xen/events.c b/plat/xen/events.c >> index 6721985..6df3e4b 100644 >> --- a/plat/xen/events.c >> +++ b/plat/xen/events.c >> @@ -38,7 +38,7 @@ >> #include <common/events.h> >> #include <xen/xen.h> >> #include <uk/print.h> >> -#include <uk/arch/atomic.h> >> +#include <uk/bitops.h> >> >> #define NR_EVS 1024 >> >> @@ -69,7 +69,7 @@ void unbind_all_ports(void) >> continue; >> #endif >> >> - if (ukarch_test_and_clr_bit(i, bound_ports)) { >> + if (__uk_test_and_clear_bit(i, bound_ports)) { >> uk_pr_warn("Port %d still bound!\n", i); >> unbind_evtchn(i); >> } >> @@ -112,7 +112,7 @@ evtchn_port_t bind_evtchn(evtchn_port_t port, >> evtchn_handler_t handler, >> ev_actions[port].data = data; >> wmb(); >> ev_actions[port].handler = handler; >> - ukarch_set_bit(port, bound_ports); >> + __uk_set_bit(port, bound_ports); >> >> return port; >> } >> @@ -130,7 +130,7 @@ void unbind_evtchn(evtchn_port_t port) >> ev_actions[port].handler = default_handler; >> wmb(); >> ev_actions[port].data = NULL; >> - ukarch_clr_bit(port, bound_ports); >> + __uk_clear_bit(port, bound_ports); >> >> close.port = port; >> rc = HYPERVISOR_event_channel_op(EVTCHNOP_close, &close); >> @@ -297,7 +297,7 @@ inline void mask_evtchn(uint32_t port) >> { >> shared_info_t *s = HYPERVISOR_shared_info; >> >> - ukarch_set_bit_sync(port, &s->evtchn_mask[0]); >> + uk_set_bit(port, &s->evtchn_mask[0]); >> } >> >> inline void unmask_evtchn(uint32_t port) >> @@ -305,15 +305,15 @@ inline void unmask_evtchn(uint32_t port) >> shared_info_t *s = HYPERVISOR_shared_info; >> vcpu_info_t *vcpu_info = &s->vcpu_info[smp_processor_id()]; >> >> - ukarch_clr_bit_sync(port, &s->evtchn_mask[0]); >> + uk_clear_bit(port, &s->evtchn_mask[0]); >> >> /* >> * The following is basically the equivalent of 'hw_resend_irq'. >> * Just like a real IO-APIC we 'lose the interrupt edge' if the >> * channel is masked. >> */ >> - if (ukarch_test_bit_sync(port, &s->evtchn_pending[0]) && >> - !ukarch_test_and_set_bit_sync(port / (sizeof(unsigned long) * 8), >> + if (uk_test_bit(port, &s->evtchn_pending[0]) && >> + !uk_test_and_set_bit(port / (sizeof(unsigned long) * 8), >> &vcpu_info->evtchn_pending_sel)) { >> vcpu_info->evtchn_upcall_pending = 1; >> #ifdef XEN_HAVE_PV_UPCALL_MASK >> @@ -327,7 +327,7 @@ inline void clear_evtchn(uint32_t port) >> { >> shared_info_t *s = HYPERVISOR_shared_info; >> >> - ukarch_clr_bit_sync(port, &s->evtchn_pending[0]); >> + uk_clear_bit(port, &s->evtchn_pending[0]); >> } >> >> struct uk_alloc; >> diff --git a/plat/xen/xenbus/xs_comms.c b/plat/xen/xenbus/xs_comms.c >> index c8201a5..274e44b 100644 >> --- a/plat/xen/xenbus/xs_comms.c >> +++ b/plat/xen/xenbus/xs_comms.c >> @@ -186,7 +186,7 @@ static void xs_request_put(struct xs_request *xs_req) >> >> ukarch_spin_lock(&xs_req_pool.lock); >> >> - UK_ASSERT(ukarch_test_bit(reqid, xs_req_pool.entries_bm) == 1); >> + UK_ASSERT(uk_test_bit(reqid, xs_req_pool.entries_bm) == 1); >> >> uk_clear_bit(reqid, xs_req_pool.entries_bm); >> xs_req_pool.num_live--; >> @@ -427,7 +427,7 @@ static void process_reply(struct xsd_sockmsg *hdr, char >> *payload) >> { >> struct xs_request *xs_req; >> >> - if (!ukarch_test_bit(hdr->req_id, xs_req_pool.entries_bm)) { >> + if (!uk_test_bit(hdr->req_id, xs_req_pool.entries_bm)) { >> uk_pr_warn("Invalid reply id=%d\n", hdr->req_id); >> free(payload); >> return; >> > > -- > Dr. Florian Schmidt > フローリアン・シュミット > Research Scientist, > Systems and Machine Learning Group > NEC Laboratories Europe > Kurfürsten-Anlage 36, D-69115 Heidelberg > Tel. +49 (0)6221 4342-265 > Fax: +49 (0)6221 4342-155 > e-mail: florian.schmidt@xxxxxxxxx > ============================================================ > Registered at Amtsgericht Mannheim, Germany, HRB728558 -- Yuri Volchkov Software Specialist NEC Europe Ltd Kurfürsten-Anlage 36 D-69115 Heidelberg _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |