diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2018-05-04 14:24:51 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-05-04 14:24:51 +0200 |
| commit | 08141db61a7a947b701d06aa5c90cd825c55e350 (patch) | |
| tree | 3a47d7c702f152f5f1e5198731227067607b98d6 /pkg/csource/csource.go | |
| parent | 0f503c18d939e6dde67eb2b2d44202db44fe9de6 (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.go | 36 |
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 |
