counter.h (71e3c3083b47ad0f04322c5a1173377433c05a6e) | counter.h (ab3059a8e7f382cff93dbe4d1b082adf62f4d849) |
---|---|
1/*- 2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD 3 * 4 * Copyright (c) 2012, 2013 Konstantin Belousov <kib@FreeBSD.org> 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 36 unchanged lines hidden (view full) --- 45#define counter_enter() do {} while (0) 46#define counter_exit() do {} while (0) 47 48#ifdef IN_SUBR_COUNTER_C 49static inline uint64_t 50counter_u64_read_one(uint64_t *p, int cpu) 51{ 52 | 1/*- 2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD 3 * 4 * Copyright (c) 2012, 2013 Konstantin Belousov <kib@FreeBSD.org> 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 36 unchanged lines hidden (view full) --- 45#define counter_enter() do {} while (0) 46#define counter_exit() do {} while (0) 47 48#ifdef IN_SUBR_COUNTER_C 49static inline uint64_t 50counter_u64_read_one(uint64_t *p, int cpu) 51{ 52 |
53 return (*(uint64_t *)((char *)p + sizeof(struct pcpu) * cpu)); | 53 return (*(uint64_t *)((char *)p + UMA_PCPU_ALLOC_SIZE * cpu)); |
54} 55 56static inline uint64_t 57counter_u64_fetch_inline(uint64_t *p) 58{ 59 uint64_t r; 60 int i; 61 62 r = 0; 63 CPU_FOREACH(i) 64 r += counter_u64_read_one((uint64_t *)p, i); 65 66 return (r); 67} 68 69static void 70counter_u64_zero_one_cpu(void *arg) 71{ 72 | 54} 55 56static inline uint64_t 57counter_u64_fetch_inline(uint64_t *p) 58{ 59 uint64_t r; 60 int i; 61 62 r = 0; 63 CPU_FOREACH(i) 64 r += counter_u64_read_one((uint64_t *)p, i); 65 66 return (r); 67} 68 69static void 70counter_u64_zero_one_cpu(void *arg) 71{ 72 |
73 *((uint64_t *)((char *)arg + sizeof(struct pcpu) * | 73 *((uint64_t *)((char *)arg + UMA_PCPU_ALLOC_SIZE * |
74 PCPU_GET(cpuid))) = 0; 75} 76 77static inline void 78counter_u64_zero_inline(counter_u64_t c) 79{ 80 81 smp_rendezvous(smp_no_rendezvous_barrier, counter_u64_zero_one_cpu, --- 26 unchanged lines hidden (view full) --- 108#define counter_exit() critical_exit() 109 110#ifdef IN_SUBR_COUNTER_C 111/* XXXKIB non-atomic 64bit read */ 112static inline uint64_t 113counter_u64_read_one(uint64_t *p, int cpu) 114{ 115 | 74 PCPU_GET(cpuid))) = 0; 75} 76 77static inline void 78counter_u64_zero_inline(counter_u64_t c) 79{ 80 81 smp_rendezvous(smp_no_rendezvous_barrier, counter_u64_zero_one_cpu, --- 26 unchanged lines hidden (view full) --- 108#define counter_exit() critical_exit() 109 110#ifdef IN_SUBR_COUNTER_C 111/* XXXKIB non-atomic 64bit read */ 112static inline uint64_t 113counter_u64_read_one(uint64_t *p, int cpu) 114{ 115 |
116 return (*(uint64_t *)((char *)p + sizeof(struct pcpu) * cpu)); | 116 return (*(uint64_t *)((char *)p + UMA_PCPU_ALLOC_SIZE * cpu)); |
117} 118 119static inline uint64_t 120counter_u64_fetch_inline(uint64_t *p) 121{ 122 uint64_t r; 123 int i; 124 --- 4 unchanged lines hidden (view full) --- 129 return (r); 130} 131 132/* XXXKIB non-atomic 64bit store, might interrupt increment */ 133static void 134counter_u64_zero_one_cpu(void *arg) 135{ 136 | 117} 118 119static inline uint64_t 120counter_u64_fetch_inline(uint64_t *p) 121{ 122 uint64_t r; 123 int i; 124 --- 4 unchanged lines hidden (view full) --- 129 return (r); 130} 131 132/* XXXKIB non-atomic 64bit store, might interrupt increment */ 133static void 134counter_u64_zero_one_cpu(void *arg) 135{ 136 |
137 *((uint64_t *)((char *)arg + sizeof(struct pcpu) * | 137 *((uint64_t *)((char *)arg + UMA_PCPU_ALLOC_SIZE * |
138 PCPU_GET(cpuid))) = 0; 139} 140 141static inline void 142counter_u64_zero_inline(counter_u64_t c) 143{ 144 145 smp_rendezvous(smp_no_rendezvous_barrier, counter_u64_zero_one_cpu, --- 21 unchanged lines hidden --- | 138 PCPU_GET(cpuid))) = 0; 139} 140 141static inline void 142counter_u64_zero_inline(counter_u64_t c) 143{ 144 145 smp_rendezvous(smp_no_rendezvous_barrier, counter_u64_zero_one_cpu, --- 21 unchanged lines hidden --- |