1 /* 2 * Copyright (C) 2008 Stefan Hajnoczi <stefanha (at) gmail.com>. 3 * 4 * This program is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU General Public License as 6 * published by the Free Software Foundation; either version 2 of the 7 * License, or any later version. 8 * 9 * This program is distributed in the hope that it will be useful, but 10 * WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, write to the Free Software 16 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 */ 18 19 #include <assert.h> 20 #include <gpxe/serial.h> 21 #include <gpxe/gdbstub.h> 22 #include <gpxe/gdbserial.h> 23 24 struct gdb_transport serial_gdb_transport __gdb_transport; 25 26 static size_t gdbserial_recv ( char *buf, size_t len ) { 27 assert ( len > 0 ); 28 buf [ 0 ] = serial_getc(); 29 return 1; 30 } 31 32 static void gdbserial_send ( const char *buf, size_t len ) { 33 while ( len-- > 0 ) { 34 serial_putc ( *buf++ ); 35 } 36 } 37 38 struct gdb_transport serial_gdb_transport __gdb_transport = { 39 .name = "serial", 40 .recv = gdbserial_recv, 41 .send = gdbserial_send, 42 }; 43 44 struct gdb_transport *gdbserial_configure ( void ) { 45 return &serial_gdb_transport; 46 } 47