mib added a comment.

In D95712#2563091 <https://reviews.llvm.org/D95712#2563091>, @labath wrote:

> Unfortunately I don't have the bandwidth to review this, though I feel that 
> this should have a wider discussion, given that its destined to become a 
> pretty big chunk of our public immutable api surface.

Thanks for taking the time to peek at this :) !

> Some questions to seed that discussion:
>
>   get_num_memory_regions() -> int:
>   get_memory_region_at_index(idx: int) -> lldb.SBMemoryRegionInfo:
>
> This means that the implementation needs to know the exact count of memory 
> regions at any given moment. Elsewhere, we've handled this by having a single 
> api like `get_memory_region_containing_address`. This permits (but doesn't 
> force) the implementation to be lazy in calculating the memory regions, and 
> the caller can still enumerate the memory regions by starting with 
> `get_memory_region_containing_address(0)` and continuing by 
> `get_memory_region_containing_address(prev_region.base + prev_region+size)`. 
> I think we should do the same here.
>
>   get_num_threads() -> int:
>   get_thread_at_index(idx: int) -> Dict:
>
> This suffers from the same problem, though the solution is not that simple. 
> But given that, not too long ago, we've (me&Jim) had a long discussion about 
> how materializing all the threads all the time is prohibitively expensive, it 
> might be good to elaborate on how exactly is this supposed to work (must the 
> implementation always return all threads, or can it have threads disappear 
> temporarily, etc.)

Sounds good! Regarding the threads, after talking to @jingham and 
@jasonmolenda, it sounds like XNU doesn't have a way to provide all its kernel 
threads at a single time, only the one loaded in each CPU core.
I changed the python interface to allow lazy loading, using the address to 
fetch a memory region or a thread ID to fetch a certain thread.

>   get_register_for_thread(tid:int) -> Dict:
>
> I guess this should be at least get_register**s**_for_thread

Typo :p !

>   read_memory_at_address(addr:int) -> lldb.SBData:
>
> How much memory is this supposed to read?

Right ... Originally, I didn't want to limit the users on how much data they 
should store in the SBData, that's why I didn't provided the size and checked 
the SBData size in the C++ interface.
In hindsight, this was a wrong design.

>   can_debug() -> bool:
>
> What's the use case for this?

Indeed, that didn't serve much purpose. Got rid of it :)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D95712/new/

https://reviews.llvm.org/D95712

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to