aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/csource/csource.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-05-04 14:24:51 +0200
committerDmitry Vyukov <dvyukov@google.com>2018-05-04 14:24:51 +0200
commit08141db61a7a947b701d06aa5c90cd825c55e350 (patch)
tree3a47d7c702f152f5f1e5198731227067607b98d6 /pkg/csource/csource.go
parent0f503c18d939e6dde67eb2b2d44202db44fe9de6 (diff)
gometalinter: enable line length checking
120 columns looks like a reasonable limit and requires few changes to existing code. Update #538
Diffstat (limited to 'pkg/csource/csource.go')
-rw-r--r--pkg/csource/csource.go36
1 files changed, 22 insertions, 14 deletions
diff --git a/pkg/csource/csource.go b/pkg/csource/csource.go
index ddc108959..6ac68464f 100644
--- a/pkg/csource/csource.go
+++ b/pkg/csource/csource.go
@@ -323,20 +323,7 @@ func (ctx *context) generateCalls(p prog.ExecProg) ([]string, []uint64) {
switch arg.Kind {
case prog.ExecArgCsumInet:
csumSeq++
- fmt.Fprintf(w, "\tstruct csum_inet csum_%d;\n", csumSeq)
- fmt.Fprintf(w, "\tcsum_inet_init(&csum_%d);\n", csumSeq)
- for i, chunk := range arg.Chunks {
- switch chunk.Kind {
- case prog.ExecArgCsumChunkData:
- fmt.Fprintf(w, "\tNONFAILING(csum_inet_update(&csum_%d, (const uint8_t*)0x%x, %d));\n", csumSeq, chunk.Value, chunk.Size)
- case prog.ExecArgCsumChunkConst:
- fmt.Fprintf(w, "\tuint%d_t csum_%d_chunk_%d = 0x%x;\n", chunk.Size*8, csumSeq, i, chunk.Value)
- fmt.Fprintf(w, "\tcsum_inet_update(&csum_%d, (const uint8_t*)&csum_%d_chunk_%d, %d);\n", csumSeq, csumSeq, i, chunk.Size)
- default:
- panic(fmt.Sprintf("unknown checksum chunk kind %v", chunk.Kind))
- }
- }
- fmt.Fprintf(w, "\tNONFAILING(*(uint16_t*)0x%x = csum_inet_digest(&csum_%d));\n", copyin.Addr, csumSeq)
+ ctx.generateCsumInet(w, copyin.Addr, arg, csumSeq)
default:
panic(fmt.Sprintf("unknown csum kind %v", arg.Kind))
}
@@ -409,6 +396,27 @@ func (ctx *context) generateCalls(p prog.ExecProg) ([]string, []uint64) {
return calls, p.Vars
}
+func (ctx *context) generateCsumInet(w *bytes.Buffer, addr uint64, arg prog.ExecArgCsum, csumSeq int) {
+ fmt.Fprintf(w, "\tstruct csum_inet csum_%d;\n", csumSeq)
+ fmt.Fprintf(w, "\tcsum_inet_init(&csum_%d);\n", csumSeq)
+ for i, chunk := range arg.Chunks {
+ switch chunk.Kind {
+ case prog.ExecArgCsumChunkData:
+ fmt.Fprintf(w, "\tNONFAILING(csum_inet_update(&csum_%d, (const uint8_t*)0x%x, %d));\n",
+ csumSeq, chunk.Value, chunk.Size)
+ case prog.ExecArgCsumChunkConst:
+ fmt.Fprintf(w, "\tuint%d_t csum_%d_chunk_%d = 0x%x;\n",
+ chunk.Size*8, csumSeq, i, chunk.Value)
+ fmt.Fprintf(w, "\tcsum_inet_update(&csum_%d, (const uint8_t*)&csum_%d_chunk_%d, %d);\n",
+ csumSeq, csumSeq, i, chunk.Size)
+ default:
+ panic(fmt.Sprintf("unknown checksum chunk kind %v", chunk.Kind))
+ }
+ }
+ fmt.Fprintf(w, "\tNONFAILING(*(uint16_t*)0x%x = csum_inet_digest(&csum_%d));\n",
+ addr, csumSeq)
+}
+
func (ctx *context) constArgToStr(arg prog.ExecArgConst) string {
mask := (uint64(1) << (arg.Size * 8)) - 1
v := arg.Value & mask