LXR
linux/
Documentation/
crc32.txt
v4.10
v4.9.11
v4.9.10
v4.9.9
v4.9.8
v4.9.7
v4.9.6
v4.9.5
v4.9.4
v4.9.3
v4.9.2
v4.9.1
v4.9
v4.8.17
v4.8.16
v4.8.15
v4.8.14
v4.8.13
v4.8.12
v4.8.11
v4.8.10
v4.8.9
v4.8.8
v4.8.7
v4.8.6
v4.8.5
v4.8.4
v4.8.3
v4.8.2
v4.8.1
v4.8
v4.7.10
v4.7.9
v4.7.8
v4.7.7
v4.7.6
v4.7.5
v4.7.4
v4.7.3
v4.7.2
v4.7.1
v4.7
v4.6.7
v4.6.6
v4.6.5
v4.6.4
v4.6.3
v4.6.2
v4.6.1
v4.6
v4.5.7
v4.5.6
v4.5.5
v4.5.4
v4.5.3
v4.5.2
v4.5.1
v4.5
v4.4.50
v4.4.49
v4.4.48
v4.4.47
v4.4.46
v4.4.45
v4.4.44
v4.4.43
v4.4.42
v4.4.41
v4.4.40
v4.4.39
v4.4.38
v4.4.37
v4.4.36
v4.4.35
v4.4.34
v4.4.33
v4.4.32
v4.4.31
v4.4.30
v4.4.29
v4.4.28
v4.4.27
v4.4.26
v4.4.25
v4.4.24
v4.4.23
v4.4.22
v4.4.21
v4.4.20
v4.4.19
v4.4.18
v4.4.17
v4.4.16
v4.4.15
v4.4.14
v4.4.13
v4.4.12
v4.4.11
v4.4.10
v4.4.9
v4.4.8
v4.4.7
v4.4.6
v4.4.5
v4.4.4
v4.4.3
v4.4.2
v4.4.1
v4.4
v4.3.6
v4.3.5
v4.3.4
v4.3.3
v4.3.2
v4.3.1
v4.3
v4.2.8
v4.2.7
v4.2.6
v4.2.5
v4.2.4
v4.2.3
v4.2.2
v4.2.1
v4.2
v4.1.38
v4.1.37
v4.1.36
v4.1.35
v4.1.34
v4.1.33
v4.1.32
v4.1.31
v4.1.30
v4.1.29
v4.1.28
v4.1.27
v4.1.26
v4.1.25
v4.1.24
v4.1.23
v4.1.22
v4.1.21
v4.1.20
v4.1.19
v4.1.18
v4.1.17
v4.1.16
v4.1.15
v4.1.14
v4.1.13
v4.1.12
v4.1.11
v4.1.10
v4.1.9
v4.1.8
v4.1.7
v4.1.6
v4.1.5
v4.1.4
v4.1.3
v4.1.2
v4.1.1
v4.1
v4.0.9
v4.0.8
v4.0.7
v4.0.6
v4.0.5
v4.0.4
v4.0.3
v4.0.2
v4.0.1
v4.0
v3.19.8
v3.19.7
v3.19.6
v3.19.5
v3.19.4
v3.19.3
v3.19.2
v3.19.1
v3.19
v3.18.48
v3.18.47
v3.18.46
v3.18.45
v3.18.44
v3.18.43
v3.18.42
v3.18.41
v3.18.40
v3.18.39
v3.18.38
v3.18.37
v3.18.36
v3.18.35
v3.18.34
v3.18.33
v3.18.32
v3.18.31
v3.18.30
v3.18.29
v3.18.28
v3.18.27
v3.18.26
v3.18.25
v3.18.24
v3.18.23
v3.18.22
v3.18.21
v3.18.20
v3.18.19
v3.18.18
v3.18.17
v3.18.16
v3.18.15
v3.18.14
v3.18.13
v3.18.12
v3.18.11
v3.18.10
v3.18.9
v3.18.8
v3.18.7
v3.18.6
v3.18.5
v3.18.4
v3.18.3
v3.18.2
v3.18.1
v3.18
v3.17.8
v3.17.7
v3.17.6
v3.17.5
v3.17.4
v3.17.3
v3.17.2
v3.17.1
v3.17
v3.16.39
v3.16.38
v3.16.37
v3.16.36
v3.16.35
v3.16.7
v3.16.6
v3.16.5
v3.16.4
v3.16.3
v3.16.2
v3.16.1
v3.16
v3.15.10
v3.15.9
v3.15.8
v3.15.7
v3.15.6
v3.15.5
v3.15.4
v3.15.3
v3.15.2
v3.15.1
v3.15
v3.14.79
v3.14.78
v3.14.77
v3.14.76
v3.14.75
v3.14.74
v3.14.73
v3.14.72
v3.14.71
v3.14.70
v3.14.69
v3.14.68
v3.14.67
v3.14.66
v3.14.65
v3.14.64
v3.14.63
v3.14.62
v3.14.61
v3.14.60
v3.14.59
v3.14.58
v3.14.57
v3.14.56
v3.14.55
v3.14.54
v3.14.53
v3.14.52
v3.14.51
v3.14.50
v3.14.49
v3.14.48
v3.14.47
v3.14.46
v3.14.45
v3.14.44
v3.14.43
v3.14.42
v3.14.41
v3.14.40
v3.14.39
v3.14.38
v3.14.37
v3.14.36
v3.14.35
v3.14.34
v3.14.33
v3.14.32
v3.14.31
v3.14.30
v3.14.29
v3.14.28
v3.14.27
v3.14.26
v3.14.25
v3.14.24
v3.14.23
v3.14.22
v3.14.21
v3.14.20
v3.14.19
v3.14.18
v3.14.17
v3.14.16
v3.14.15
v3.14.14
v3.14.13
v3.14.12
v3.14.11
v3.14.10
v3.14.9
v3.14.8
v3.14.7
v3.14.6
v3.14.5
v3.14.4
v3.14.3
v3.14.2
v3.14.1
v3.14
v3.13.11
v3.13.10
v3.13.9
v3.13.8
v3.13.7
v3.13.6
v3.13.5
v3.13.4
v3.13.3
v3.13.2
v3.13.1
v3.13
v3.12.70
v3.12.69
v3.12.68
v3.12.67
v3.12.66
v3.12.65
v3.12.64
v3.12.63
v3.12.62
v3.12.61
v3.12.60
v3.12.59
v3.12.58
v3.12.57
v3.12.56
v3.12.55
v3.12.54
v3.12.53
v3.12.52
v3.12.51
v3.12.50
v3.12.49
v3.12.48
v3.12.47
v3.12.46
v3.12.45
v3.12.44
v3.12.43
v3.12.42
v3.12.41
v3.12.40
v3.12.39
v3.12.38
v3.12.37
v3.12.36
v3.12.35
v3.12.34
v3.12.33
v3.12.32
v3.12.31
v3.12.30
v3.12.29
v3.12.28
v3.12.27
v3.12.26
v3.12.25
v3.12.24
v3.12.23
v3.12.22
v3.12.21
v3.12.20
v3.12.19
v3.12.18
v3.12.17
v3.12.16
v3.12.15
v3.12.14
v3.12.13
v3.12.12
v3.12.11
v3.12.10
v3.12.9
v3.12.8
v3.12.7
v3.12.6
v3.12.5
v3.12.4
v3.12.3
v3.12.2
v3.12.1
v3.12
v3.11.10
v3.11.9
v3.11.8
v3.11.7
v3.11.6
v3.11.5
v3.11.4
v3.11.3
v3.11.2
v3.11.1
v3.11
v3.10.105
v3.10.104
v3.10.103
v3.10.102
v3.10.101
v3.10.100
v3.10.99
v3.10.98
v3.10.97
v3.10.96
v3.10.95
v3.10.94
v3.10.93
v3.10.92
v3.10.91
v3.10.90
v3.10.89
v3.10.88
v3.10.87
v3.10.86
v3.10.85
v3.10.84
v3.10.83
v3.10.82
v3.10.81
v3.10.80
v3.10.79
v3.10.78
v3.10.77
v3.10.76
v3.10.75
v3.10.74
v3.10.73
v3.10.72
v3.10.71
v3.10.70
v3.10.69
v3.10.68
v3.10.67
v3.10.66
v3.10.65
v3.10.64
v3.10.63
v3.10.62
v3.10.61
v3.10.60
v3.10.59
v3.10.58
v3.10.57
v3.10.56
v3.10.55
v3.10.54
v3.10.53
v3.10.52
v3.10.51
v3.10.50
v3.10.49
v3.10.48
v3.10.47
v3.10.46
v3.10.45
v3.10.44
v3.10.43
v3.10.42
v3.10.41
v3.10.40
v3.10.39
v3.10.38
v3.10.37
v3.10.36
v3.10.35
v3.10.34
v3.10.33
v3.10.32
v3.10.31
v3.10.30
v3.10.29
v3.10.28
v3.10.27
v3.10.26
v3.10.25
v3.10.24
v3.10.23
v3.10.22
v3.10.21
v3.10.20
v3.10.19
v3.10.18
v3.10.17
v3.10.16
v3.10.15
v3.10.14
v3.10.13
v3.10.12
v3.10.11
v3.10.10
v3.10.9
v3.10.8
v3.10.7
v3.10.6
v3.10.5
v3.10.4
v3.10.3
v3.10.2
v3.10.1
v3.10
v3.9.11
v3.9.10
v3.9.9
v3.9.8
v3.9.7
v3.9.6
v3.9.5
v3.9.4
v3.9.3
v3.9.2
v3.9.1
v3.9
v3.8.13
v3.8.12
v3.8.11
v3.8.10
v3.8.9
v3.8.8
v3.8.7
v3.8.6
v3.8.5
v3.8.4
v3.8.3
v3.8.2
v3.8.1
v3.8
v3.7.10
v3.7.9
v3.7.8
v3.7.7
v3.7.6
v3.7.5
v3.7.4
v3.7.3
v3.7.2
v3.7.1
v3.7
v3.6.11
v3.6.10
v3.6.9
v3.6.8
v3.6.7
v3.6.6
v3.6.5
v3.6.4
v3.6.3
v3.6.2
v3.6.1
v3.6
v3.5.7
v3.5.6
v3.5.5
v3.5.4
v3.5.3
v3.5.2
v3.5.1
v3.5
v3.4.113
v3.4.112
v3.4.111
v3.4.110
v3.4.109
v3.4.108
v3.4.107
v3.4.106
v3.4.105
v3.4.104
v3.4.103
v3.4.102
v3.4.101
v3.4.100
v3.4.99
v3.4.98
v3.4.97
v3.4.96
v3.4.95
v3.4.94
v3.4.93
v3.4.92
v3.4.91
v3.4.90
v3.4.89
v3.4.88
v3.4.87
v3.4.86
v3.4.85
v3.4.84
v3.4.83
v3.4.82
v3.4.81
v3.4.80
v3.4.79
v3.4.78
v3.4.77
v3.4.76
v3.4.75
v3.4.74
v3.4.73
v3.4.72
v3.4.71
v3.4.70
v3.4.69
v3.4.68
v3.4.67
v3.4.66
v3.4.65
v3.4.64
v3.4.63
v3.4.62
v3.4.61
v3.4.60
v3.4.59
v3.4.58
v3.4.57
v3.4.56
v3.4.55
v3.4.54
v3.4.53
v3.4.52
v3.4.51
v3.4.50
v3.4.49
v3.4.48
v3.4.47
v3.4.46
v3.4.45
v3.4.44
v3.4.43
v3.4.42
v3.4.41
v3.4.40
v3.4.39
v3.4.38
v3.4.37
v3.4.36
v3.4.35
v3.4.34
v3.4.33
v3.4.32
v3.4.31
v3.4.30
v3.4.29
v3.4.28
v3.4.27
v3.4.26
v3.4.25
v3.4.24
v3.4.23
v3.4.22
v3.4.21
v3.4.20
v3.4.19
v3.4.18
v3.4.17
v3.4.16
v3.4.15
v3.4.14
v3.4.13
v3.4.12
v3.4.11
v3.4.10
v3.4.9
v3.4.8
v3.4.7
v3.4.6
v3.4.5
v3.4.4
v3.4.3
v3.4.2
v3.4.1
v3.4
v3.3.8
v3.3.7
v3.3.6
v3.3.5
v3.3.4
v3.3.3
v3.3.2
v3.3.1
v3.3
v3.2.84
v3.2.83
v3.2.82
v3.2.81
v3.2.80
v3.2.79
v3.2.78
v3.2.77
v3.2.76
v3.2.75
v3.2.74
v3.2.73
v3.2.72
v3.2.71
v3.2.70
v3.2.69
v3.2.68
v3.2.67
v3.2.66
v3.2.65
v3.2.64
v3.2.63
v3.2.62
v3.2.61
v3.2.60
v3.2.59
v3.2.58
v3.2.57
v3.2.56
v3.2.55
v3.2.54
v3.2.53
v3.2.52
v3.2.51
v3.2.50
v3.2.49
v3.2.48
v3.2.47
v3.2.46
v3.2.45
v3.2.44
v3.2.43
v3.2.42
v3.2.41
v3.2.40
v3.2.39
v3.2.38
v3.2.37
v3.2.36
v3.2.35
v3.2.34
v3.2.33
v3.2.32
v3.2.31
v3.2.30
2.29
v3.12.28
v3.2.27
v3.2.26
v3.2.25
v3.2.24
v3.2.23
v3.2.22
v3.2.21
v3.2.20
v3.2.19
v3.2.18
v3.2.17
v3.2.16
v3.2.15
v3.2.14
v3.2.13
v3.2.12
v3.2.11
v3.2.10
v3.2.9
v3.2.8
v3.2.7
v3.2.6
v3.2.5
v3.2.4
v3.2.3
v3.2.2
v3.2.1
v3.2
v3.1.10
v3.1.9
v3.1.8
v3.1.7
v3.1.6
v3.1.5
v3.1.4
v3.1.3
v3.1.2
v3.1.1
v3.1
v3.0.101
v3.0.100
v3.0.99
v3.0.98
v3.0.97
v3.0.96
v3.0.95
v3.0.94
v3.0.93
v3.0.92
v3.0.91
v3.0.90
v3.0.89
v3.0.88
v3.0.87
v3.0.86
v3.0.85
v3.0.84
v3.0.83
v3.0.82
v3.0.81
v3.0.80
v3.0.79
v3.0.78
v3.0.77
v3.0.76
v3.0.75
v3.0.74
v3.0.73
v3.0.72
v3.0.71
v3.0.70
v3.0.69
v3.0.68
v3.0.67
v3.0.66
v3.0.65
v3.0.64
v3.0.63
v3.0.62
v3.0.61
v3.0.60
v3.0.59
v3.0.58
v3.0.57
v3.0.56
v3.0.55
v3.0.54
v3.0.53
v3.0.52
v3.0.51
v3.0.50
v3.0.49
v3.0.48
v3.0.47
v3.0.46
v3.0.45
v3.0.44
v3.0.43
v3.0.42
v3.0.41
v3.0.40
v3.0.39
v3.0.38
v3.0.37
v3.0.36
v3.0.35
v3.0.34
v3.0.33
v3.0.32
v3.0.31
v3.0.30
v3.0.29
v3.0.28
v3.0.27
v3.0.26
v3.0.25
v3.0.24
v3.0.23
v3.0.22
v3.0.21
v3.0.20
v3.0.19
v3.0.18
v3.0.17
v3.0.16
v3.0.15
v3.0.14
v3.0.13
v3.0.12
v3.0.11
v3.0.10
v3.0.9
v3.0.8
v3.0.7
v3.0.6
v3.0.5
v3.0.4
v3.0.3
v3.0.2
v3.0.1
v3.0
v2.6.39.4
v2.6.39.3
v2.6.39.2
v2.6.39.1
v2.6.39
v2.6.38.8
v2.6.38.7
v2.6.38.6
v2.6.38.5
v2.6.38.4
v2.6.38.3
v2.6.38.2
v2.6.38.1
v2.6.38
v2.6.37.6
v2.6.37.5
v2.6.37.4
v2.6.37.3
v2.6.37.2
v2.6.37.1
v2.6.37
v2.6.36.4
v2.6.36.3
v2.6.36.2
v2.6.36.1
v2.6.36
v2.6.35.14
v2.6.35.13
v2.6.35.12
v2.6.35.11
v2.6.35.10
v2.6.35.9
v2.6.35.8
v2.6.35.7
v2.6.35.6
v2.6.35.5
v2.6.35.4
v2.6.35.3
v2.6.35.2
v2.6.35.1
v2.6.35
v2.6.34.15
v2.6.34.14
v2.6.34.13
v2.6.34.12
v2.6.34.11
v2.6.34.10
v2.6.34.9
v2.6.34.8
v2.6.34.7
v2.6.34.6
v2.6.34.5
v2.6.34.4
v2.6.34.3
v2.6.34.2
v2.6.34.1
v2.6.34
v2.6.33.20
v2.6.33.19
v2.6.33.18
v2.6.33.17
v2.6.33.16
v2.6.33.15
v2.6.33.14
v2.6.33.13
v2.6.33.12
v2.6.33.11
v2.6.33.10
v2.6.33.9
v2.6.33.8
v2.6.33.7
v2.6.33.6
v2.6.33.5
v2.6.33.4
v2.6.33.3
v2.6.33.2
v2.6.33.1
v2.6.33
v2.6.32.71
v2.6.32.70
v2.6.32.69
v2.6.32.68
v2.6.32.67
v2.6.32.66
v2.6.32.65
v2.6.32.64
v2.6.32.63
v2.6.32.62
v2.6.32.61
v2.6.32.60
v2.6.32.59
v2.6.32.58
v2.6.32.57
v2.6.32.56
v2.6.32.55
v2.6.32.54
v2.6.32.53
v2.6.32.52
v2.6.32.51
v2.6.32.50
v2.6.32.49
v2.6.32.48
v2.6.32.47
v2.6.32.46
v2.6.32.45
v2.6.32.44
v2.6.32.43
v2.6.32.42
v2.6.32.41
v2.6.32.40
v2.6.32.39
v2.6.32.38
v2.6.32.37
v2.6.32.36
v2.6.32.35
v2.6.32.34
v2.6.32.33
v2.6.32.32
v2.6.32.31
v2.6.32.30
v2.6.32.29
v2.6.32.28
v2.6.32.27
v2.6.32.26
v2.6.32.25
v2.6.32.24
v2.6.32.23
v2.6.32.22
v2.6.32.21
v2.6.32.20
v2.6.32.19
v2.6.32.18
v2.6.32.17
v2.6.32.16
v2.6.32.15
v2.6.32.14
v2.6.32.13
v2.6.32.12
v2.6.32.11
v2.6.32.10
v2.6.32.9
v2.6.32.8
v2.6.32.7
v2.6.32.6
v2.6.32.5
v2.6.32.4
v2.6.32.3
v2.6.32.2
v2.6.32.1
v2.6.32
v2.6.31.14
v2.6.31.13
v2.6.31.12
v2.6.31.11
v2.6.31.10
v2.6.31.9
v2.6.31.8
v2.6.31.7
v2.6.31.6
v2.6.31.5
v2.6.31.4
v2.6.31.3
v2.6.31.2
v2.6.31.1
v2.6.31
v2.6.30.10
v2.6.30.9
v2.6.30.8
v2.6.30.7
v2.6.30.6
v2.6.30.5
v2.6.30.4
v2.6.30.3
v2.6.30.2
v2.6.30.1
v2.6.30
v2.6.29.6
v2.6.29.5
v2.6.29.4
v2.6.29.3
v2.6.29.2
v2.6.29.1
v2.6.29
v2.6.28.10
v2.6.28.9
v2.6.28.8
v2.6.28.7
v2.6.28.6
v2.6.28.5
v2.6.28.4
v2.6.28.3
v2.6.28.2
v2.6.28.1
v2.6.28
v2.6.27.62
v2.6.27.61
v2.6.27.60
v2.6.27.59
v2.6.27.58
v2.6.27.57
v2.6.27.56
v2.6.27.55
v2.6.27.54
v2.6.27.53
v2.6.27.52
v2.6.27.51
v2.6.27.50
v2.6.27.49
v2.6.27.48
v2.6.27.47
v2.6.27.46
v2.6.27.45
v2.6.27.44
v2.6.27.43
v2.6.27.42
v2.6.27.41
v2.6.27.40
v2.6.27.39
v2.6.27.38
v2.6.27.37
v2.6.27.36
v2.6.27.35
v2.6.27.34
v2.6.27.33
v2.6.27.32
v2.6.27.31
v2.6.27.30
v2.6.27.29
v2.6.27.28
v2.6.27.27
v2.6.27.26
v2.6.27.25
v2.6.27.24
v2.6.27.23
v2.6.27.22
v2.6.27.21
v2.6.27.20
v2.6.27.19
v2.6.27.18
v2.6.27.17
v2.6.27.16
v2.6.27.15
v2.6.27.14
v2.6.27.13
v2.6.27.12
v2.6.27.11
v2.6.27.10
v2.6.27.9
v2.6.27.8
v2.6.27.7
v2.6.27.6
v2.6.27.5
v2.6.27.4
v2.6.27.3
v2.6.27.2
v2.6.27.1
v2.6.27
v2.6.26.8
v2.6.26.7
v2.6.26.6
v2.6.26.5
v2.6.26.4
v2.6.26.3
v2.6.26.2
v2.6.26.1
v2.6.26
v2.6.25.20
v2.6.25.19
v2.6.25.18
v2.6.25.17
v2.6.25.16
v2.6.25.15
v2.6.25.14
v2.6.25.13
v2.6.25.12
v2.6.25.11
v2.6.25.10
v2.6.25.9
v2.6.25.8
v2.6.25.7
v2.6.25.6
v2.6.25.5
v2.6.25.4
v2.6.25.3
v2.6.25.2
v2.6.25.1
v2.6.25
v2.6.24.7
v2.6.24.6
v2.6.24.5
v2.6.24.4
v2.6.24.3
v2.6.24.2
v2.6.24.1
v2.6.24
v2.6.23.17
v2.6.23.16
v2.6.23.15
v2.6.23.14
v2.6.23.13
v2.6.23.12
v2.6.23.11
v2.6.23.10
v2.6.23.9
v2.6.23.8
v2.6.23.7
v2.6.23.6
v2.6.23.5
v2.6.23.4
v2.6.23.3
v2.6.23.2
v2.6.23.1
v2.6.23
v2.6.22.19
v2.6.22.18
v2.6.22.17
v2.6.22.16
v2.6.22.15
v2.6.22.14
v2.6.22.13
v2.6.22.12
v2.6.22.11
v2.6.22.10
v2.6.22.9
v2.6.22.8
v2.6.22.7
v2.6.22.6
v2.6.22.5
v2.6.22.4
v2.6.22.3
v2.6.22.2
v2.6.22.1
v2.6.22
v2.6.21.7
v2.6.21.6
v2.6.21.5
v2.6.21.4
v2.6.21.3
v2.6.21.2
v2.6.21.1
v2.6.21
v2.6.20.21
v2.6.20.20
v2.6.20.19
v2.6.20.18
v2.6.20.17
v2.6.20.16
v2.6.20.15
v2.6.20.14
v2.6.20.13
v2.6.20.12
v2.6.20.11
v2.6.20.10
v2.6.20.9
v2.6.20.8
v2.6.20.7
v2.6.20.6
v2.6.20.5
v2.6.20.4
v2.6.20.3
v2.6.20.2
v2.6.20.1
v2.6.20
v2.6.19.7
v2.6.19.6
v2.6.19.5
v2.6.19.4
v2.6.19.3
v2.6.19.2
v2.6.19.1
v2.6.19
v2.6.18.8
v2.6.18.7
v2.6.18.6
v2.6.18.5
v2.6.18.4
v2.6.18.3
v2.6.18.2
v2.6.18.1
v2.6.18
v2.6.17.14
v2.6.17.13
v2.6.17.12
v2.6.17.11
v2.6.17.10
v2.6.17.9
v2.6.17.8
v2.6.17.7
v2.6.17.6
v2.6.17.5
v2.6.17.4
v2.6.17.3
v2.6.17.2
v2.6.17.1
v2.6.17
v2.6.16.62
v2.6.16.61
v2.6.16.60
v2.6.16.59
v2.6.16.58
v2.6.16.57
v2.6.16.56
v2.6.16.55
v2.6.16.54
v2.6.16.53
v2.6.16.52
v2.6.16.51
v2.6.16.50
v2.6.16.49
v2.6.16.48
v2.6.16.47
v2.6.16.46
v2.6.16.45
v2.6.16.44
v2.6.16.43
v2.6.16.42
v2.6.16.41
v2.6.16.40
v2.6.16.39
v2.6.16.38
v2.6.16.37
v2.6.16.36
v2.6.16.35
v2.6.16.34
v2.6.16.33
v2.6.16.32
v2.6.16.31
v2.6.16.30
v2.6.16.29
v2.6.16.28
v2.6.16.27
v2.6.16.26
v2.6.16.25
v2.6.16.24
v2.6.16.23
v2.6.16.22
v2.6.16.21
v2.6.16.20
v2.6.16.19
v2.6.16.18
v2.6.16.17
v2.6.16.16
v2.6.16.15
v2.6.16.14
v2.6.16.13
v2.6.16.12
v2.6.16.11
v2.6.16.10
v2.6.16.9
v2.6.16.8
v2.6.16.7
v2.6.16.6
v2.6.16.5
v2.6.16.4
v2.6.16.3
v2.6.16.2
v2.6.16.1
v2.6.16
v2.6.15.7
v2.6.15.6
v2.6.15.5
v2.6.15.4
v2.6.15.3
v2.6.15.2
v2.6.15.1
v2.6.15
v2.6.14.7
v2.6.14.6
v2.6.14.5
v2.6.14.4
v2.6.14.3
v2.6.14.2
v2.6.11
v2.6.1
v2.<.241lue="v2.6.16.29 v2.6.ion 2.6.16.29 option value="v1" 29 v > v2.6.16ion> ti
v2.6.21="vti option value="v1" 29.15.1" > v2.6.15.1
ion value="v2.6.21.8" > v2.6.22.8 v2.6.22.7 v2.6.22.6 v2.6.22.5 v2.6.22.4 v2.6.22.5 v2.6.
valu22./spa v2 22./formv2 22.a valu22 href="../linux+v3.9.6/Documenta> /crc32.txt">valu22.img src="../.sta> c/gfx/right.png" alt=">>">va./spa v2va.spa class="lxr_search">valu ="+search" method="post" onsubmit="return do_search(this);">valu22.input typ hidden" nam navtarget" on> ">valu22.input typ text" nam search" id search">valu22.buttptityp submit">Searchvalu22Prefs2 22./a>va./spa v2lu22 2./divv2lu22 2.form ac> ="ajax+*" method="post" onsubmit="return false;">va.input typ hidden" nam ajax_lookup" id ajax_lookup" on> ">vlu22 2./formv2vlu22 2.div class="headingbottpm">2 21./a>A brief CRC tutorial.
2 22./a>v
2 23./a>A CRC is a long-divisoptiremainder. You add the CRC to the message,v
2 24./a>and the whole thing (message+CRC) is a multiple of the givenv
2 25./a>CRC polynomial. To check the CRC, you ca either check that thev
2 26./a>CRC matches the recomputed on> , *or* you ca check that thev
2 27./a>remainder computed ptithe message+CRC is 0. This latter approachv
2 28./a>is used by a lot of hardware implementa> s, and is why so manyv
2 29./a>protocols put the end-of-fram flag after the CRC.
2 va>v
2 11./a>It's ac>ually the sam long divisoptiyou learned in school, except thatv
2 12./a>- We're working in binary, so the digits are only 0 and 1, andv
2 13./a>- When dividing polynomials, there are no carries. Rather than add andv
2 14./a> subtrac>, we just xor. Thus, we tend to get a bit sloppy aboutv
2 15./a> the difference between adding and subtrac>ing.
2 16 va>v
2 17./a>Like all divisopt, the remainder is always smaller than the divisor.v
2 18./a>To produce a 32-bit CRC, the divisor is ac>ually a 33-bit CRC polynomial.v
2 19./a>Since it's 33 bits long, bit 32 is always going to be set, so usually the
2 20./a>CRC is written in hex withithe most significa t bit omitted. (Ifiyou're
2 21./a>familiar withithe IEEE 754 floa>ing-point format, it's the sam idea.)
2 22./a>v
2 23./a>Note that a CRC is computed pver a string of *bits*, so you have
2 24./a>to decide ptithe endianness of the bits within each byte. To get
2 25./a>the best error-detec>ing properties, this should correspond to the
2 26 va>order they're ac>ually sent. For example, standard RS-232 serial is
2 27./a>little-endian;ithe most significa t bit (sometimes used for parity)
2 28./a>is sent last. And when appending a CRC word to a message, you should
2 29./a>do it in the right order, matching the endianness.v
2 3 va>v
2 31./a>Just like withiordinary divisopt, you proceed pte digit (bit) at a time.v
2 32./a>Each step of the divisoptiyou take pte more digit (bit) of the dividendv
2 33./a>and append it to the current remainder. Then you figure out thev
2 34./a>appropriate multiple of the divisor to subtrac> to being the remainderv
2 35./a>back into range. In binary, this is easy - it has to be either 0ior 1,v
2 36./a>and to make the XOR ca cel, it's just a copy of bit 32 of the remainder.v
2 37 va>v
2 38./a>When computing a CRC, we don't care about the quotient, so we ca v
2 39./a>throw the quotient bit away, but subtrac> the appropriate multiple ofv
2 40./a>the polynomial from the remainder and we're back to where we started,v
2 41./a>ready to process the next bit.v
2 42./a>v
2 43./a>A big-endian CRC written this way would be coded like:v
2 44./a>for (i = 0; i < input_bits; i++) {v
2 45./a> multiple = remainder & 0x80000000 ? CRCPOLY : 0;v
2 46./a> remainder = (remainder << 1 | next_input_bit()) ^ multiple;v
2 47 va>}v
2 48./a>v
2 49./a>Notice how, to get at bit 32 of the shifted remainder, we lookv
2 50./a>at bit 31 of the remainder *before* shifting it.v
2 51./a>v
2 52./a>But also notice how the next_input_bit() bits we're shifting intov
2 53./a>the remainder don't ac>ually affec> any decisopt-making untilv
2 54./a>32 bits later. Thus, the first 32 cycles of this are pretty boring.
2 55./a>Also, to add the CRC to a message, we need a 32-bit-long hole for it at
2 56./a>the end, so we have to add 32 extra cycles shifting in zeros at thev
2 57 va>end of every message,v
2 58./a>v
2 59./a>These details lead to a standard trick: rearrange merging in thev
2 60./a>next_input_bit() untilithe moment it's needed. Then the first 32 cyclesv
2 61./a>ca be precomputed, and merging in the final 32 zero bits to make roomv
2 62./a>for the CRC ca be skipped entirely. This changes the code to:v
2 63./a>v
2 64./a>for (i = 0; i < input_bits; i++) {v
2 65./a> remainder ^= next_input_bit() << 31;v
2 66./a> multiple = (remainder & 0x80000000) ? CRCPOLY : 0;v
2 67./a> remainder = (remainder << 1) ^ multiple;v
2 68 va>}v
2 69./a>v
2 70./a>Withithis > miza> , the little-endian code is particularly simple:v
2 71./a>for (i = 0; i < input_bits; i++) {v
2 72./a> remainder ^= next_input_bit();v
2 73./a> multiple = (remainder & 1) ? CRCPOLY : 0;v
2 74./a> remainder = (remainder >> 1) ^ multiple;v
2 75 va>}v
2 76 va>v
2 77./a>The most significa t coefficient of the remainder polynomial is storedv
2 78./a>in the least significa t bit of the binary "remainder" variable.v
2 79./a>The other details of endianness have been hidden in CRCPOLY (which must
2 80./a>be bit-reversed) and next_input_bit().v
2 81./a>v
2 82./a>As long as next_input_bit is returning the bits in a sensible order, we don'tv
2 83./a>*have* to wait untilithe last possible moment to merge in addi> al bits.v
2 84./a>We ca do it 8 bits at a time rather than 1 bit at a time:v
2 85./a>for (i = 0; i < input_bytes; i++) {v
2 86./a> remainder ^= next_input_byte() << 24;v
2 87./a> for (j = 0; j < 8; j++) {v
2 88./a> multiple = (remainder & 0x80000000) ? CRCPOLY : 0;v
2 89./a> remainder = (remainder << 1) ^ multiple;v
2 90./a> }v
2 91 va>}v
2 92./a>v
2 93./a>Or in little-endian:v
2 94./a>for (i = 0; i < input_bytes; i++) {v
2 95./a> remainder ^= next_input_byte();v
2 96./a> for (j = 0; j < 8; j++) {v
2 97./a> multiple = (remainder & 1) ? CRCPOLY : 0;v
2 98./a> remainder = (remainder >> 1) ^ multiple;v
2 99./a> }v
2100 va>}v
2101./a>v
2102./a>If the input is a multiple of 32 bits, you ca even XOR in a 32-bitv
2103./a>word at a time and increase the inner loop count to 32.v
2104./a>v
2105./a>You ca also mix and match the two loop styles, for example doing thev
2106./a>bulk of a message byte-at-a-time and adding bit-at-a-time processingv
2107./a>for any frac> al bytes at the end.v
2108./a>v
2109./a>To reduce the number of condi> al branches, software commonly usesv
2110./a>the byte-at-a-time table method, popularized by Dilip V. Sarwate,v
2111./a>"Computa> of Cyclic Redundancy Checks via Table Look-Up", Comm. ACMv
2112./a>v.31 no.8 (August 1998) p.21008-1013.v
2113./a>v
2114./a>Here, rather than just shifting pte bit of the remainder to decidev
2115./a>in the correct multiple to subtrac>, we ca shift a byte at a time.v
2116 va>This produces a 40-bit (rather than a 33-bit) intermediate remainder,v
2117./a>and the correct multiple of the polynomial to subtrac> is found usingv
2118./a>a 256-entry lookup table indexed by the high 8 bits.v
2119./a>v
2120./a>(The table entries are simply the CRC-32 of the given pte-byte messages.)
2121./a>v
2122./a>When space is more constrained, smaller tables ca be used, e.g. twov
2123./a>4-bit shifts followed by a lookup in a 16-entry table.v
2124./a>v
2125./a>I> is not prac> cal to process much more than 8 bits at a time usingithisv
2126 va>techniq , because tables larger than 256 entries use too much memory and,v
2127./a>more importantly, too much of the L1 cache.v
2128./a>v
2129./a>To get higher software performanc , a "slicing" techniq ca be used.v
213 va>See "High Octane CRC Genera> withithe Intel Slicing-by-8 Algorithm",v
2131./a>ftp://download.intel.com/technology/comms/perfnet/download/slicing-by-8.pdfv
2132./a>v
2133./a>This does not change the number of table lookups, but does increasev
2134./a>the parallelism. Withithe classic Sarwate algorithm, each table lookupv
2135./a>must be completed before the index of the next ca be computed.v
2136 va>v
2137 va>A "slicing by 2" techniq would shift the remainder 16 bits at a time,v
2138./a>producing a 48-bit intermediate remainder. Rather than doing a singlev
2139./a>lookup in a 65536-entry table, the two high bytes are looked up inv
2140./a>two different 256-entry tables. Each contains the remainder requiredv
2141./a>to ca cel out the corresponding byte. The tables are different because thev
2142./a>polynomials to ca cel are different. One has non-zero coefficients fromv
2143./a>x^32 to x^39, while the other goes from x^40 to x^47.v
2144./a>v
2145./a>Since modern processors ca handle many parallel memory opera> s, thisv
2146./a>takes barely longer than a single table look-up and thus performs almostv
2147 va>twice as fast as the basic Sarwate algorithm.v
2148./a>v
2149./a>This ca be extended to "slicing by 4" usingi4 256-entry tables.v
2150./a>Each step, 32 bits of data is fetched, XORed withithe CRC, and the resultv
2151./a>broken into bytes and looked up in the tables. Because the 32-bit shiftv
2152./a>leaves the low-order bits of the intermediate remainder zero, thev
2153./a>final CRC is simply the XOR of the 4 table look-ups.v
2154./a>v
2155./a>But this still enforces sequential execu> : a second group of tablev
2156./a>look-ups ca not begin untilithe previous groups 4 table look-ups have allv
2157 va>been completed. Thus, the processor's load/store unit is sometimes idle.v
2158./a>v
2159./a>To make maximum use of the processor, "slicing by 8" performs 8 look-upsv
2160./a>in parallel. Each step, the 32-bit CRC is shifted 64 bits and XORedv
2161./a>withi64 bits of input data. What is important to note is that 4 ofv
2162./a>those 8 bytes are simply copies of the input data;ithey do not dependv
2163./a>ptithe previous CRC at all. Thus, those 4 table look-ups may commencev
2164./a>immediately, without waiting for the previous loop itera> .
2165./a>
2166./a>By always havingi4 loads in flight, a modern superscalar processor ca v
2167 va>be kept busy and make full use of its L1 cache.v
2168./a>v
2169./a>Two more details about CRC implementa> in the real world:v
217 va>v
2171./a>Normally, appending zero bits to a message which is already a multiplev
2172./a>of a polynomial produces a larger multiple of that polynomial. Thus,v
2173./a>a basic CRC will not detec> appended zero bits (or bytes). To enablev
2174./a>a CRC to detec> this condi> , it's common to invert the CRC beforev
2175 va>appending it. This makes the remainder of the message+crc come out notv
2176 va>as zero, but some fixed non-zero on> . (The CRC of the invers v
2177./a>patter , 0xffffffff.)
2178./a>v
2179./a>The sam problem applies to zero bits prepended to the message, and av
2180./a>similar solu> is used. Instead of starting the CRC computa> withv
2181./a>a remainder of 0, an initial remainder of all ones is used. As long asv
2182./a>you start the sam way decoding, it doesn't make a difference.v
2183./a> The original LXR software by the
LXR community./a>, this experimental vers by
lxr@linux.no./a>. ./divv2.div class="subfooter"> lxr.linux.no kindly hosted by
Redpill Linpro AS./a>, provider of Linux consulting and opera> s services since 1995. ./divv2 ./bodyv2./htmlv2