OpenCores
URL https://opencores.org/ocsvn/or1k_soc_on_altera_embedded_dev_kit/or1k_soc_on_altera_embedded_dev_kit/trunk

Subversion Repositories or1k_soc_on_altera_embedded_dev_kit

[/] [or1k_soc_on_altera_embedded_dev_kit/] [trunk/] [linux-2.6/] [linux-2.6.24/] [arch/] [m32r/] [lib/] [csum_partial_copy.c] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 xianfeng
/*
2
 * INET         An implementation of the TCP/IP protocol suite for the LINUX
3
 *              operating system.  INET is implemented using the  BSD Socket
4
 *              interface as the means of communication with the user level.
5
 *
6
 *              M32R specific IP/TCP/UDP checksumming routines
7
 *              (Some code taken from MIPS architecture)
8
 *
9
 * This file is subject to the terms and conditions of the GNU General Public
10
 * License.  See the file "COPYING" in the main directory of this archive
11
 * for more details.
12
 *
13
 * Copyright (C) 1994, 1995  Waldorf Electronics GmbH
14
 * Copyright (C) 1998, 1999  Ralf Baechle
15
 * Copyright (C) 2001-2005  Hiroyuki Kondo, Hirokazu Takata
16
 *
17
 */
18
 
19
#include <linux/module.h>
20
#include <linux/types.h>
21
#include <linux/string.h>
22
 
23
#include <net/checksum.h>
24
#include <asm/byteorder.h>
25
#include <asm/uaccess.h>
26
 
27
/*
28
 * Copy while checksumming, otherwise like csum_partial
29
 */
30
__wsum
31
csum_partial_copy_nocheck (const void *src, void *dst, int len, __wsum sum)
32
{
33
        sum = csum_partial(src, len, sum);
34
        memcpy(dst, src, len);
35
 
36
        return sum;
37
}
38
EXPORT_SYMBOL(csum_partial_copy_nocheck);
39
 
40
/*
41
 * Copy from userspace and compute checksum.  If we catch an exception
42
 * then zero the rest of the buffer.
43
 */
44
__wsum
45
csum_partial_copy_from_user (const void __user *src, void *dst,
46
                             int len, __wsum sum, int *err_ptr)
47
{
48
        int missing;
49
 
50
        missing = copy_from_user(dst, src, len);
51
        if (missing) {
52
                memset(dst + len - missing, 0, missing);
53
                *err_ptr = -EFAULT;
54
        }
55
 
56
        return csum_partial(dst, len-missing, sum);
57
}
58
EXPORT_SYMBOL(csum_partial_copy_from_user);
59
EXPORT_SYMBOL(csum_partial);

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.