<div dir="ltr">FWIW, there's really only 1 function that this applies to.  All of Tong's other changes were not in HostInfo.  AFAICT the only function this applies to is HostInfoPosix::LookupGroupName.</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 26, 2014 at 1:49 PM, Todd Fiala <span dir="ltr"><<a href="mailto:tfiala@google.com" target="_blank">tfiala@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Agreed. We'll move this off thread.<div><br></div><div>Tong, for now let's just replicate the bits we need to and we'll see how much duplication we end up with.</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>-Todd</div></font></span></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 26, 2014 at 1:46 PM, Zachary Turner <span dir="ltr"><<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Would it make more sense to discuss this in a separate thread on lldb-dev?  Even if we end up doing that, it's outside the scope of this patch.  For this patch I'd prefer the android specific stuff to go in Host[Info/Thread]Linux, since that is the most-specific implementation it can go in.  If we decide to make the instance change after discussing it in the larger context on lldb-dev, I can go through and do it.</div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 26, 2014 at 1:40 PM, Todd Fiala <span dir="ltr"><<a href="mailto:tfiala@google.com" target="_blank">tfiala@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">If there is concern over calling a GetHostInfoInstance() or some kind of singleton caller, we can always wrap that in static calls that do it for us.  But I'd much prefer here to have an instance with a vtable.</div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 26, 2014 at 1:36 PM, Todd Fiala <span dir="ltr"><<a href="mailto:tfiala@google.com" target="_blank">tfiala@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I think some of the changes you wanted to see Tong make (which I think are fine to change) are what Tong's looking at now, which need to deviate some POSIX code in very minor ways.<div><br></div><div>Tong - can you call out the code for us?</div><div><br></div><div>Thanks,</div><div>Todd</div></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 26, 2014 at 1:34 PM, Zachary Turner <span dir="ltr"><<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I think that for the purposes that I wrote HostInfo to handle, very simple methods that answer simple queries about the host os, the virtual methods would not be needed.  For example, what's the username of the currently logged in user?  What's the page size?  Get the value of an environment variable.  If something is more complicated than that, it probably belongs somewhere else.  Do you have an example in mind that you think is a natural fit for HostInfo, but would require calling virtual methods?</div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 26, 2014 at 1:32 PM, Todd Fiala <span dir="ltr"><<a href="mailto:tfiala@google.com" target="_blank">tfiala@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><span>><span style="font-family:arial,sans-serif;font-size:13px">It wasn't made a class instance hierarchy for the same reason that Host wasn't a class instance to begin with.  HostInfo only contains method that are inherently static.  You could make it an instance, but it would be awkward, because you would have to create one for the sole purpose of calling a method that is actually static.  </span><div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div></span><div><span style="font-family:arial,sans-serif;font-size:13px">Right - but when we want to nuke #ifdefs, we really do need the virtual methods.  Which I think is all for the best.  But needs the virtual methods to share large bits of code and only deviate in little places.</span></div><div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">Is there any big reason not to just go to a singleton instance here?</span></div></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 26, 2014 at 1:30 PM, Zachary Turner <span dir="ltr"><<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">It wasn't made a class instance hierarchy for the same reason that Host wasn't a class instance to begin with.  HostInfo only contains method that are inherently static.  You could make it an instance, but it would be awkward, because you would have to create one for the sole purpose of calling a method that is actually static.  </div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 26, 2014 at 1:17 PM, Todd Fiala <span dir="ltr"><<a href="mailto:tfiala@google.com" target="_blank">tfiala@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hey Zachary,<div><br></div><div>I just started looking at the HostInfo* classes.  I'm a little confused - we are going to want to have Android behavior differ in just a tiny little way from Linux (and POSIX).  So we're going to want to break out some implementation details into some virtual methods that are possibly no-op or different-op on the *largely same* code for POSIX/Linux.  Yet all the calls in these classes are static.</div><div><br></div><div>Why isn't this just a class instance hierarchy?  We're going to want it to be more like that so we can use typical C++ class design patterns like using virtual methods and the like.</div><div><br></div><div>Or did you have some other paradigm in mind for nearly-similar classes that want to share the bulk of the code in these classes?</div></div><div class="gmail_extra"><div><div><br><div class="gmail_quote">On Fri, Sep 26, 2014 at 1:09 PM, Todd Fiala <span dir="ltr"><<a href="mailto:tfiala@google.com" target="_blank">tfiala@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span>>>! In D5495#27, @zturner wrote:<br>
> I'm not seeing the changes to HostInfoPosix and HostThreadPosix that I<br>
> suggested.  Are those still coming in a followup?<br>
<br>
</span>With Android, it's *mostly* Linux (at the kernel level) except we have a whole slew of different runtime libraries that differ.  So, for much of the behavior, it will be like Linux/POSIX, but with certain libc calls and whatnot that just don't exist.  Ideally we minimize how much we differ and only when needed.<br>
<br>
Tong, can you take a look at that?  If we need a Linux-derived Android variant of these classes, this might be a good time to look at those.  Thanks.<br>
<br>
> (paraphrased) how do you launch on Android, then?<br>
<br>
In general you don't.  The Android zygote takes care of launching for userland, and debuggers usually run attach-only.<br>
<br>
That's just a half-truth, though.  We do have low-level, internal capabilities for launching,  but since that is not a supported path for developers, they are not exposed in a way we can access with POSIX-like calls.  The launch code might end up only showing up in an AOSP environment but, in any event, the attach path is the crucial one for Android right now.<br>
<br>
<a href="http://reviews.llvm.org/D5495" target="_blank">http://reviews.llvm.org/D5495</a><br>
<br>
<br>
</blockquote></div><br><br clear="all"><div><br></div></div></div><span><font color="#888888">-- <br><div dir="ltr"><table cellspacing="0" cellpadding="0" style="color:rgb(136,136,136);font-family:'Times New Roman'"><tbody><tr style="color:rgb(85,85,85);font-family:sans-serif;font-size:small"><td nowrap style="border-top-style:solid;border-top-color:rgb(213,15,37);border-top-width:2px">Todd Fiala |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(51,105,232);border-top-width:2px"> Software Engineer |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(0,153,57);border-top-width:2px"> <a href="mailto:tfiala@google.com" style="color:rgb(17,85,204)" target="_blank"><span style="background-color:rgb(255,255,204);color:rgb(34,34,34);background-repeat:initial initial">tfiala@google.com</span></a> |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(238,178,17);border-top-width:2px"><font color="#1155cc"> <a>650-943-3180</a></font></td></tr></tbody></table><br></div>
</font></span></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><table cellspacing="0" cellpadding="0" style="color:rgb(136,136,136);font-family:'Times New Roman'"><tbody><tr style="color:rgb(85,85,85);font-family:sans-serif;font-size:small"><td nowrap style="border-top-style:solid;border-top-color:rgb(213,15,37);border-top-width:2px">Todd Fiala |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(51,105,232);border-top-width:2px"> Software Engineer |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(0,153,57);border-top-width:2px"> <a href="mailto:tfiala@google.com" style="color:rgb(17,85,204)" target="_blank"><span style="background-color:rgb(255,255,204);color:rgb(34,34,34);background-repeat:initial initial">tfiala@google.com</span></a> |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(238,178,17);border-top-width:2px"><font color="#1155cc"> <a>650-943-3180</a></font></td></tr></tbody></table><br></div>
</div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><table cellspacing="0" cellpadding="0" style="color:rgb(136,136,136);font-family:'Times New Roman'"><tbody><tr style="color:rgb(85,85,85);font-family:sans-serif;font-size:small"><td nowrap style="border-top-style:solid;border-top-color:rgb(213,15,37);border-top-width:2px">Todd Fiala |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(51,105,232);border-top-width:2px"> Software Engineer |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(0,153,57);border-top-width:2px"> <a href="mailto:tfiala@google.com" style="color:rgb(17,85,204)" target="_blank"><span style="background-color:rgb(255,255,204);color:rgb(34,34,34);background-repeat:initial initial">tfiala@google.com</span></a> |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(238,178,17);border-top-width:2px"><font color="#1155cc"> <a>650-943-3180</a></font></td></tr></tbody></table><br></div>
</div>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><table cellspacing="0" cellpadding="0" style="color:rgb(136,136,136);font-family:'Times New Roman'"><tbody><tr style="color:rgb(85,85,85);font-family:sans-serif;font-size:small"><td nowrap style="border-top-style:solid;border-top-color:rgb(213,15,37);border-top-width:2px">Todd Fiala |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(51,105,232);border-top-width:2px"> Software Engineer |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(0,153,57);border-top-width:2px"> <a href="mailto:tfiala@google.com" style="color:rgb(17,85,204)" target="_blank"><span style="background-color:rgb(255,255,204);color:rgb(34,34,34);background-repeat:initial initial">tfiala@google.com</span></a> |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(238,178,17);border-top-width:2px"><font color="#1155cc"> <a>650-943-3180</a></font></td></tr></tbody></table><br></div>
</div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><table cellspacing="0" cellpadding="0" style="color:rgb(136,136,136);font-family:'Times New Roman'"><tbody><tr style="color:rgb(85,85,85);font-family:sans-serif;font-size:small"><td nowrap style="border-top-style:solid;border-top-color:rgb(213,15,37);border-top-width:2px">Todd Fiala |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(51,105,232);border-top-width:2px"> Software Engineer |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(0,153,57);border-top-width:2px"> <a href="mailto:tfiala@google.com" style="color:rgb(17,85,204)" target="_blank"><span style="background-color:rgb(255,255,204);color:rgb(34,34,34);background-repeat:initial initial">tfiala@google.com</span></a> |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(238,178,17);border-top-width:2px"><font color="#1155cc"> <a>650-943-3180</a></font></td></tr></tbody></table><br></div>
</div>
</div></div></blockquote></div><br></div>