From 0a65975b7e3c381c415cbc116255bffa08e509c0 Mon Sep 17 00:00:00 2001 From: ffdfgdfg Date: Thu, 9 Jan 2020 23:07:39 +0800 Subject: [PATCH] 64bit alignment --- lib/mux/conn.go | 4 ++-- lib/mux/queue.go | 15 +++++++++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/mux/conn.go b/lib/mux/conn.go index c0a5b7ae..592de292 100644 --- a/lib/mux/conn.go +++ b/lib/mux/conn.go @@ -199,7 +199,7 @@ func (Self *window) CloseWindow() { type ReceiveWindow struct { window - bufQueue ReceiveWindowQueue + bufQueue *ReceiveWindowQueue element *common.ListElement count int8 bw *writeBandwidth @@ -210,7 +210,7 @@ type ReceiveWindow struct { func (Self *ReceiveWindow) New(mux *Mux) { // initial a window for receive - Self.bufQueue.New() + Self.bufQueue = NewReceiveWindowQueue() Self.element = common.ListElementPool.Get() Self.maxSizeDone = Self.pack(common.MAXIMUM_SEGMENT_SIZE*30, 0, false) Self.mux = mux diff --git a/lib/mux/queue.go b/lib/mux/queue.go index cc804076..b7cbb0b0 100644 --- a/lib/mux/queue.go +++ b/lib/mux/queue.go @@ -209,10 +209,10 @@ func NewListElement(buf []byte, l uint16, part bool) (element *common.ListElemen } type ReceiveWindowQueue struct { + lengthWait uint64 chain *bufChain stopOp chan struct{} readOp chan struct{} - lengthWait uint64 // really strange ???? need put here // https://golang.org/pkg/sync/atomic/#pkg-note-BUG // On non-Linux ARM, the 64-bit functions use instructions unavailable before the ARMv6k core. // On ARM, x86-32, and 32-bit MIPS, it is the caller's responsibility @@ -221,11 +221,14 @@ type ReceiveWindowQueue struct { timeout time.Time } -func (Self *ReceiveWindowQueue) New() { - Self.readOp = make(chan struct{}) - Self.chain = new(bufChain) - Self.chain.new(64) - Self.stopOp = make(chan struct{}, 2) +func NewReceiveWindowQueue() *ReceiveWindowQueue { + queue := ReceiveWindowQueue{ + chain: new(bufChain), + stopOp: make(chan struct{}, 2), + readOp: make(chan struct{}), + } + queue.chain.new(64) + return &queue } func (Self *ReceiveWindowQueue) Push(element *common.ListElement) {