diff options
Diffstat (limited to 'runtime/docs/html/copy_8c-source.html')
-rw-r--r-- | runtime/docs/html/copy_8c-source.html | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/runtime/docs/html/copy_8c-source.html b/runtime/docs/html/copy_8c-source.html new file mode 100644 index 00000000..2e21314c --- /dev/null +++ b/runtime/docs/html/copy_8c-source.html @@ -0,0 +1,111 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>SystemTap: SystemTap Runtime Library</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<div class="qindex"><a class="qindex" href="index.html">Intro</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_defs.html">Defines</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumeration Values</a></div> + +<!-- Generated by Doxygen 1.3.9.1 --> +<h1>copy.c</h1><a href="copy_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment">00001 <span class="keywordtype">long</span> <a class="code" href="copy_8c.html#a0">_stp_strncpy_from_user</a>(<span class="keywordtype">char</span> *dst, <span class="keyword">const</span> <span class="keywordtype">char</span> __user *src, <span class="keywordtype">long</span> count); +00002 <span class="comment">//static long __stp_strncpy_from_user(char *dst, const char __user *src, long count);</span> +00003 +00004 <span class="preprocessor">#if defined (__i386__)</span> +00005 <span class="preprocessor"></span><span class="preprocessor">#define __stp_strncpy_from_user(dst,src,count,res) \</span> +00006 <span class="preprocessor">do { \</span> +00007 <span class="preprocessor"> int __d0, __d1, __d2; \</span> +00008 <span class="preprocessor"> __asm__ __volatile__( \</span> +00009 <span class="preprocessor"> " testl %1,%1\n" \</span> +00010 <span class="preprocessor"> " jz 2f\n" \</span> +00011 <span class="preprocessor"> "0: lodsb\n" \</span> +00012 <span class="preprocessor"> " stosb\n" \</span> +00013 <span class="preprocessor"> " testb %%al,%%al\n" \</span> +00014 <span class="preprocessor"> " jz 1f\n" \</span> +00015 <span class="preprocessor"> " decl %1\n" \</span> +00016 <span class="preprocessor"> " jnz 0b\n" \</span> +00017 <span class="preprocessor"> "1: subl %1,%0\n" \</span> +00018 <span class="preprocessor"> "2:\n" \</span> +00019 <span class="preprocessor"> ".section .fixup,\"ax\"\n" \</span> +00020 <span class="preprocessor"> "3: movl %5,%0\n" \</span> +00021 <span class="preprocessor"> " jmp 2b\n" \</span> +00022 <span class="preprocessor"> ".previous\n" \</span> +00023 <span class="preprocessor"> ".section __ex_table,\"a\"\n" \</span> +00024 <span class="preprocessor"> " .align 4\n" \</span> +00025 <span class="preprocessor"> " .long 0b,3b\n" \</span> +00026 <span class="preprocessor"> ".previous" \</span> +00027 <span class="preprocessor"> : "=d"(res), "=c"(count), "=&a" (__d0), "=&S" (__d1), \</span> +00028 <span class="preprocessor"> "=&D" (__d2) \</span> +00029 <span class="preprocessor"> : "i"(-EFAULT), "0"(count), "1"(count), "3"(src), "4"(dst) \</span> +00030 <span class="preprocessor"> : "memory"); \</span> +00031 <span class="preprocessor">} while (0)</span> +00032 <span class="preprocessor"></span><span class="preprocessor">#elif defined (__x86_64__)</span> +00033 <span class="preprocessor"></span><span class="preprocessor">#define __stp_strncpy_from_user(dst,src,count,res) \</span> +00034 <span class="preprocessor">do { \</span> +00035 <span class="preprocessor"> long __d0, __d1, __d2; \</span> +00036 <span class="preprocessor"> __asm__ __volatile__( \</span> +00037 <span class="preprocessor"> " testq %1,%1\n" \</span> +00038 <span class="preprocessor"> " jz 2f\n" \</span> +00039 <span class="preprocessor"> "0: lodsb\n" \</span> +00040 <span class="preprocessor"> " stosb\n" \</span> +00041 <span class="preprocessor"> " testb %%al,%%al\n" \</span> +00042 <span class="preprocessor"> " jz 1f\n" \</span> +00043 <span class="preprocessor"> " decq %1\n" \</span> +00044 <span class="preprocessor"> " jnz 0b\n" \</span> +00045 <span class="preprocessor"> "1: subq %1,%0\n" \</span> +00046 <span class="preprocessor"> "2:\n" \</span> +00047 <span class="preprocessor"> ".section .fixup,\"ax\"\n" \</span> +00048 <span class="preprocessor"> "3: movq %5,%0\n" \</span> +00049 <span class="preprocessor"> " jmp 2b\n" \</span> +00050 <span class="preprocessor"> ".previous\n" \</span> +00051 <span class="preprocessor"> ".section __ex_table,\"a\"\n" \</span> +00052 <span class="preprocessor"> " .align 8\n" \</span> +00053 <span class="preprocessor"> " .quad 0b,3b\n" \</span> +00054 <span class="preprocessor"> ".previous" \</span> +00055 <span class="preprocessor"> : "=r"(res), "=c"(count), "=&a" (__d0), "=&S" (__d1), \</span> +00056 <span class="preprocessor"> "=&D" (__d2) \</span> +00057 <span class="preprocessor"> : "i"(-EFAULT), "0"(count), "1"(count), "3"(src), "4"(dst) \</span> +00058 <span class="preprocessor"> : "memory"); \</span> +00059 <span class="preprocessor">} while (0)</span> +00060 <span class="preprocessor"></span><span class="preprocessor">#endif</span> +00061 <span class="preprocessor"></span> +00078 <span class="keywordtype">long</span> +<a name="l00079"></a><a class="code" href="copy_8c.html#a0">00079</a> <a class="code" href="copy_8c.html#a0">_stp_strncpy_from_user</a>(<span class="keywordtype">char</span> *dst, <span class="keyword">const</span> <span class="keywordtype">char</span> __user *src, <span class="keywordtype">long</span> count) +00080 { +00081 <span class="keywordtype">long</span> res; +00082 __stp_strncpy_from_user(dst, src, count, res); +00083 <span class="keywordflow">return</span> res; +00084 } +00085 +00099 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keyword">inline</span> +<a name="l00100"></a><a class="code" href="copy_8c.html#a1">00100</a> <a class="code" href="copy_8c.html#a1">_stp_copy_from_user</a> (<span class="keywordtype">char</span> *dst, <span class="keyword">const</span> <span class="keywordtype">char</span> __user *src, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> count) +00101 { +00102 <span class="keywordflow">return</span> __copy_from_user_inatomic(dst, src, count); +00103 } +00104 +<a name="l00115"></a><a class="code" href="copy_8c.html#a2">00115</a> <span class="keywordtype">int</span> <a class="code" href="copy_8c.html#a2">_stp_copy_argv_from_user</a> (<a class="code" href="structmap__root.html">MAP</a> list, <span class="keywordtype">char</span> __user *__user *argv) +00116 { +00117 <span class="keywordtype">char</span> str[128]; +00118 <span class="keywordtype">char</span> __user *vstr; +00119 <span class="keywordtype">int</span> len; +00120 +00121 <span class="keywordflow">if</span> (argv) +00122 argv++; +00123 +00124 <span class="keywordflow">while</span> (argv != NULL) { +00125 <span class="keywordflow">if</span> (get_user (vstr, argv)) +00126 <span class="keywordflow">break</span>; +00127 +00128 <span class="keywordflow">if</span> (vstr == NULL) +00129 <span class="keywordflow">break</span>; +00130 +00131 len = <a class="code" href="copy_8c.html#a0">_stp_strncpy_from_user</a>(str, vstr, 128); +00132 str[len] = 0; +00133 <a class="code" href="map_8c.html#a25">_stp_list_add_str</a> (list, str); +00134 argv++; +00135 } +00136 <span class="keywordflow">return</span> list-><a class="code" href="structmap__root.html#o1">num</a>; +00137 } +</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Mar 9 13:21:28 2005 for SystemTap by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> |