add writen writen_nonblock