VCL: improve debug output
[vpp.git] / src / vcl / vcom_socket.c
index 6450edd..81a4b76 100644 (file)
@@ -1557,8 +1557,17 @@ vcom_socket_sendfile (int __out_fd, int __in_fd, off_t * __offset,
 
   do
     {
-      bytes_to_read = vppcom_session_attr (out_sid,
-                                          VPPCOM_ATTR_GET_NWRITE, 0, 0);
+      rv = vppcom_session_attr (out_sid, VPPCOM_ATTR_GET_NWRITE, 0, 0);
+      if (rv < 0)
+       {
+         clib_warning ("[%d] ERROR: vppcom_session_attr (out_sid (%u), "
+                       "VPPCOM_ATTR_GET_NWRITE, 0, 0) returned %d (%s)!",
+                       getpid (), out_sid, rv, vppcom_retval_str (rv));
+         vec_reset_length (vsm->io_buffer);
+         return rv;
+       }
+
+      bytes_to_read = (size_t) rv;
       if (VCOM_DEBUG > 2)
        clib_warning ("[%d] results %ld, n_bytes_left %lu, "
                      "bytes_to_read %lu", getpid (), results,
@@ -1606,8 +1615,10 @@ vcom_socket_sendfile (int __out_fd, int __in_fd, off_t * __offset,
       if (rv < 0)
        {
          clib_warning ("[%d] ERROR: vppcom_session_write ("
-                       "out_sid %u, io_buffer %p, nbytes %d) returned %d",
-                       getpid (), out_sid, vsm->io_buffer, nbytes, rv);
+                       "out_sid %u, io_buffer %p, nbytes %d) "
+                       "returned %d (%s)",
+                       getpid (), out_sid, vsm->io_buffer, nbytes,
+                       rv, vppcom_retval_str (rv));
          if (results == 0)
            {
              vec_reset_length (vsm->io_buffer);
@@ -3000,12 +3011,10 @@ vcom_socket_epoll_pwait (int __epfd, struct epoll_event *__events,
 {
   vcom_socket_main_t *vsm = &vcom_socket_main;
   int rv = -EBADF;
-  int rv2;
   double time_to_wait = (double) 0;
   double timeout, now = 0;
   vcom_epoll_t *vepoll;
   i32 vep_idx;
-  static struct epoll_event *libc_ev = 0;
 
   /* validate __event */
   if (!__events || (__timeout < -1))
@@ -3059,42 +3068,40 @@ vcom_socket_epoll_pwait (int __epfd, struct epoll_event *__events,
                 "__timeout = %d)\n",
                 getpid (), vepoll->vcl_cnt, vepoll->libc_cnt,
                 time_to_wait, __timeout);
-      vec_validate (libc_ev, __maxevents);
       timeout = clib_time_now (&vsm->clib_time) + time_to_wait;
       do
        {
          rv = vppcom_epoll_wait (vep_idx, __events, __maxevents, 0);
-         rv2 = libc_epoll_pwait (__epfd, libc_ev, __maxevents, 1, __ss);
-         if (VCOM_DEBUG == 666)
-           fprintf (stderr, "[%d] vcom_socket_epoll_pwait: "
-                    "rv = %d, rv2 = %d, timeout = %f, now = %f\n",
-                    getpid (), rv, rv2, timeout, now);
-         if ((rv > 0) || (rv2 > 0))
+         if (rv > 0)
            {
              if (VCOM_DEBUG > 2)
                fprintf (stderr, "[%d] vcom_socket_epoll_pwait: "
-                        "rv = %d, rv2 = %d\n", getpid (), rv, rv2);
-             int n = __maxevents - rv;
-             n = rv2 <= n ? rv2 : n;
-             rv = (rv > 0) ? rv : 0;
+                        "vppcom_epoll_wait() returned %d\n", getpid (), rv);
+             goto out;
+           }
+         else if (rv < 0)
+           {
+             if (VCOM_DEBUG > 2)
+               fprintf (stderr, "[%d] ERROR: vcom_socket_epoll_pwait: "
+                        "vppcom_epoll_wait() returned %d\n", getpid (), rv);
 
-             clib_memcpy (&__events[rv], libc_ev, n * sizeof (*libc_ev));
-             rv += rv2;
              goto out;
            }
-         else if ((rv < 0) || (rv2 < 0))
+         rv = libc_epoll_pwait (__epfd, __events, __maxevents, 1, __ss);
+         if (rv > 0)
            {
-             if (rv < 0)
-               fprintf (stderr,
-                        "[%d] ERROR: vppcom_epoll_wait() returned %d\n",
-                        getpid (), rv);
-             if (rv2 < 0)
-               {
-                 fprintf (stderr,
-                          "[%d] ERROR: libc_epoll_wait() failed, errno %d\n",
-                          getpid (), errno);
-                 rv = (rv < 0) ? rv : -errno;
-               }
+             if (VCOM_DEBUG > 2)
+               fprintf (stderr, "[%d] vcom_socket_epoll_pwait: "
+                        "libc_epoll_pwait() returned %d\n", getpid (), rv);
+             goto out;
+           }
+         else if (rv < 0)
+           {
+             int errno_val = errno;
+             perror ("libc_epoll_wait");
+             fprintf (stderr, "[%d]  vcom_socket_epoll_pwait: "
+                      "libc_epoll_wait() failed, errno %d\n",
+                      getpid (), errno_val);
              goto out;
            }
          if (__timeout != -1)
@@ -3102,9 +3109,7 @@ vcom_socket_epoll_pwait (int __epfd, struct epoll_event *__events,
        }
       while (now < timeout);
     }
-
 out:
-  vec_reset_length (libc_ev);
   return rv;
 }