On 04/16/2012 05:14 PM, Takuya Yoshikawa wrote: > On Sun, 15 Apr 2012 14:25:30 +0300 > Avi Kivity <avi@xxxxxxxxxx> wrote: > > > > > @@ -1689,7 +1690,7 @@ static void mmu_sync_children(struct kvm_vcpu *vcpu, > > > > > > > > kvm_mmu_pages_init(parent, &parents, &pages); > > > > while (mmu_unsync_walk(parent, &pages)) { > > > > - int protected = 0; > > > > + bool protected = false; > > > > > > > > for_each_sp(pages, sp, parents, i) > > > > protected |= rmap_write_protect(vcpu->kvm, sp->gfn); > > > > > > Isn't this the reason we prefer int to bool? > > > > > > Not sure people like to use |= with boolean. > > > > > > > Why not? > > > > The code "bitwise OR assignment" is assuming the internal representations > of true and false: true=1, false=0. No, it doesn't. |= converts the result back to bool. In fact it's better than int x; ... x |= some_value() & MASK; since MASK might be of type longer than int, and the result can be truncated. With bool |=, it cannot. Disassembly of section .text: 0000000000000000 <f>: static bool x; void f(long y) { x |= y; 0: 0f b6 05 00 00 00 00 movzbl 0x0(%rip),%eax # 7 <f+0x7> 3: R_X86_64_PC32 .bss-0x4 7: 48 09 c7 or %rax,%rdi a: 0f 95 05 00 00 00 00 setne 0x0(%rip) # 11 <f+0x11> d: R_X86_64_PC32 .bss-0x4 } 11: c3 retq The corresponding code with 'int x' would just store the truncated result back into x. > I might have seen some point if it had been > protected = protected || rmap_... > > > But the real question is whether there is any point in re-writing completely > correct C code: there are tons of int like this in the kernel code. > > __rmap_write_protect() was introduced recently, so if this conversion is > really worthwhile, I should have been told to use bool at that time, no? It's up to developer and maintainer preference. I like bool since it documents the usage and is safer, but sometimes I miss it on review. -- error compiling committee.c: too many arguments to function -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html