Home | History | Annotate | Line # | Download | only in nat
      1 /* Internal interfaces for the NetBSD code.
      2 
      3    Copyright (C) 2006-2024 Free Software Foundation, Inc.
      4 
      5    This file is part of GDB.
      6 
      7    This program is free software; you can redistribute it and/or modify
      8    it under the terms of the GNU General Public License as published by
      9    the Free Software Foundation; either version 3 of the License, or
     10    (at your option) any later version.
     11 
     12    This program is distributed in the hope that it will be useful,
     13    but WITHOUT ANY WARRANTY; without even the implied warranty of
     14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15    GNU General Public License for more details.
     16 
     17    You should have received a copy of the GNU General Public License
     18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     19 
     20 #ifndef NAT_NETBSD_NAT_H
     21 #define NAT_NETBSD_NAT_H
     22 
     23 #include "gdbsupport/function-view.h"
     24 
     25 #include <unistd.h>
     26 
     27 namespace netbsd_nat
     28 {
     29 
     30 /* Return the executable file name of a process specified by PID.  Returns the
     31    string in a static buffer.  */
     32 
     33 extern const char *pid_to_exec_file (pid_t pid);
     34 
     35 /* Return true if PTID is still active in the inferior.  */
     36 
     37 extern bool thread_alive (ptid_t ptid);
     38 
     39 /* Return the name assigned to a thread by an application.  Returns
     40    the string in a static buffer.
     41 
     42    This function assumes internally that the queried process is stopped.  */
     43 
     44 extern const char *thread_name (ptid_t ptid);
     45 
     46 /* A generic thread lister within a specific PID.  The CALLBACK parameter
     47    is a C++ function that is called for each detected thread.
     48 
     49    This function assumes internally that the queried process is stopped.  */
     50 
     51 extern void for_each_thread (pid_t pid,
     52 			     gdb::function_view<void (ptid_t)> callback);
     53 
     54 /* Enable additional event reporting in a new process specified by PID.
     55 
     56    This function assumes internally that the queried process is stopped and
     57    traced.  */
     58 
     59 extern void enable_proc_events (pid_t pid);
     60 
     61 /* Implement reading and writing of inferior's siginfo_t specified by PID.
     62    Returns -1 on failure and the number of bytes on a successful transfer.
     63 
     64    This function assumes internally that the queried process is stopped and
     65    traced.  */
     66 
     67 extern int qxfer_siginfo (pid_t pid, const char *annex, unsigned char *readbuf,
     68 			  unsigned const char *writebuf, CORE_ADDR offset,
     69 			  int len);
     70 
     71 /* Write gdb's LEN bytes from WRITEBUF and copy it to OFFSET in inferior
     72    process' address space. The inferior is specified by PID.
     73    Returns 0 on success or errno on failure and the number of bytes
     74    on a successful transfer in XFERED_LEN.
     75 
     76    This function assumes internally that the queried process is stopped and
     77    traced.  */
     78 
     79 extern int write_memory (pid_t pid, unsigned const char *writebuf,
     80 			 CORE_ADDR offset, size_t len, size_t *xfered_len);
     81 
     82 /* Read inferior process's LEN bytes from OFFSET and copy it to WRITEBUF in
     83    gdb's address space.
     84    Returns 0 on success or errno on failure and the number of bytes
     85    on a successful transfer in XFERED_LEN.
     86 
     87    This function assumes internally that the queried process is stopped and
     88    traced.  */
     89 
     90 extern int read_memory (pid_t pid, unsigned char *readbuf, CORE_ADDR offset,
     91 			size_t len, size_t *xfered_len);
     92 }
     93 
     94 #endif
     95