diff options
author | Stephen Rothwell <sfr@canb.auug.org.au> | 2008-12-31 15:16:43 +1100 |
---|---|---|
committer | Stephen Rothwell <sfr@canb.auug.org.au> | 2008-12-31 15:16:43 +1100 |
commit | c6c9861c96315a6d0a2a69d3b12f9b16b68e8884 (patch) | |
tree | a1b1bdacca238557150245fd1c363b4e3eea6fac | |
parent | 49d6211d9a8294af49c8e575b3b5264cc80a9b85 (diff) | |
parent | 0136574e061924dc236a611f28e881a12ab6822a (diff) |
Merge commit 'kgdb/kgdb-next'
-rw-r--r-- | include/linux/kgdb.h | 42 | ||||
-rw-r--r-- | kernel/kgdb.c | 6 |
2 files changed, 43 insertions, 5 deletions
diff --git a/include/linux/kgdb.h b/include/linux/kgdb.h index 6adcc297e354..424795008f8f 100644 --- a/include/linux/kgdb.h +++ b/include/linux/kgdb.h @@ -267,8 +267,46 @@ extern int kgdb_register_io_module(struct kgdb_io *local_kgdb_io_ops); extern void kgdb_unregister_io_module(struct kgdb_io *local_kgdb_io_ops); extern int kgdb_hex2long(char **ptr, unsigned long *long_val); -extern int kgdb_mem2hex(char *mem, char *buf, int count); -extern int kgdb_hex2mem(char *buf, char *mem, int count); + +/** + * kgdb_mem2hex - (optional arch override) translate bin to hex chars + * @mem: source buffer + * @buf: target buffer + * @count: number of bytes in mem + * + * Architectures which do not support probe_kernel_(read|write), + * can make an alternate implementation of this function. + * This function safely reads memory into hex + * characters for use with the kgdb protocol. + */ +extern int __weak kgdb_mem2hex(char *mem, char *buf, int count); + +/** + * kgdb_hex2mem - (optional arch override) translate hex chars to bin + * @buf: source buffer + * @mem: target buffer + * @count: number of bytes in mem + * + * Architectures which do not support probe_kernel_(read|write), + * can make an alternate implementation of this function. + * This function safely writes hex characters into memory + * for use with the kgdb protocol. + */ +extern int __weak kgdb_hex2mem(char *buf, char *mem, int count); + +/** + * kgdb_ebin2mem - (optional arch override) Copy the binary array + * pointed to by buf into mem. + * @buf: source buffer + * @mem: target buffer + * @count: number of bytes in mem + * + * Architectures which do not support probe_kernel_(read|write), + * can make an alternate implementation of this function. + * This function safely copies binary array into memory + * for use with the kgdb protocol. + */ +extern int __weak kgdb_ebin2mem(char *buf, char *mem, int count); extern int kgdb_isremovedbreak(unsigned long addr); diff --git a/kernel/kgdb.c b/kernel/kgdb.c index e4dcfb2272a4..b5ea4650f2ea 100644 --- a/kernel/kgdb.c +++ b/kernel/kgdb.c @@ -363,7 +363,7 @@ static void put_packet(char *buffer) * Convert the memory pointed to by mem into hex, placing result in buf. * Return a pointer to the last char put in buf (null). May return an error. */ -int kgdb_mem2hex(char *mem, char *buf, int count) +int __weak kgdb_mem2hex(char *mem, char *buf, int count) { char *tmp; int err; @@ -393,7 +393,7 @@ int kgdb_mem2hex(char *mem, char *buf, int count) * 0x7d escaped with 0x7d. Return a pointer to the character after * the last byte written. */ -static int kgdb_ebin2mem(char *buf, char *mem, int count) +int __weak kgdb_ebin2mem(char *buf, char *mem, int count) { int err = 0; char c; @@ -418,7 +418,7 @@ static int kgdb_ebin2mem(char *buf, char *mem, int count) * Return a pointer to the character AFTER the last byte written. * May return an error. */ -int kgdb_hex2mem(char *buf, char *mem, int count) +int __weak kgdb_hex2mem(char *buf, char *mem, int count) { char *tmp_raw; char *tmp_hex; |