Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 30 Aug 2022 16:58:26 +0100
From:      Domagoj Stolfa <domagoj.stolfa@gmail.com>
To:        freebsd-dtrace@freebsd.org
Subject:   Re: Converting int to a string in DTrace
Message-ID:  <cce03483-a994-777d-dae0-d28ed779aadd@gmail.com>
In-Reply-To: <317C65CC-5BF0-422D-80E9-4340CD241569@FreeBSD.org>
References:  <317C65CC-5BF0-422D-80E9-4340CD241569@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------1viIHluN1HYGP4F0X3I01dDB
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi Mateusz:


I believe that lltostr might be what you're looking for?


         this->unit_number = args[1]->unit_number >= 0 ? 
lltostr(args[1]->unit_number) : "";


-- 
Domagoj

On 8/30/2022 4:49 PM, Mateusz Piotrowski wrote:
> Hello everyone,
>
> Is it possible to convert an int to a string in DTrace?
>
> E.g., I'd like the following script to work (it's an example from 
> dtrace_io(4), but with device unit number added):
>
>     #!/usr/sbin/dtrace -s
>
>     #pragma D option quiet
>
>     io:::start
>     {
>             this->unit_number = args[1]->unit_number >= 0 ?
>     (string)args[1]->unit_number : "";
>             @[args[1]->device_name, this->unit_number, execname, pid]
>     = sum(args[0]->bio_bcount);
>     }
>
>     END
>     {
>             printf("%10s%-3s %20s %10s %15s\n", "DEVICE", "", "APP",
>     "PID", "BYTES");
>             printa("%10s%-3s %20s %10d %15@d\n", @);
>     }
>
>
> (Of course, the `(string)` cast does not work here because it's just 
> not how DTrace works.)
>
> Best,
> Mateusz
--------------1viIHluN1HYGP4F0X3I01dDB
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Hi Mateusz:</p>
    <p><br>
    </p>
    <p>I believe that lltostr might be what you're looking for?</p>
    <p><br>
    </p>
    <div class="">
      <div class="">        this-&gt;unit_number =
        args[1]-&gt;unit_number &gt;= 0 ?
        lltostr(args[1]-&gt;unit_number) : "";</div>
      <div class=""><br>
      </div>
      <div class=""><br>
      </div>
      <div class="">-- <br>
      </div>
      <div class="">Domagoj<br>
      </div>
      <div class=""><br>
      </div>
    </div>
    <div class="moz-cite-prefix">On 8/30/2022 4:49 PM, Mateusz
      Piotrowski wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:317C65CC-5BF0-422D-80E9-4340CD241569@FreeBSD.org">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      Hello everyone,
      <div class=""><br class="">
      </div>
      <div class="">Is it possible to convert an int to a string in
        DTrace?</div>
      <div class=""><br class="">
      </div>
      <div class="">E.g., I'd like the following script to work (it's an
        example from dtrace_io(4), but with device unit number added):</div>
      <div class=""><br class="">
      </div>
      <blockquote style="margin: 0 0 0 40px; border: none; padding:
        0px;" class="">
        <div class="">
          <div class="">#!/usr/sbin/dtrace -s</div>
        </div>
        <div class="">
          <div class=""><br class="">
          </div>
        </div>
        <div class="">
          <div class="">#pragma D option quiet</div>
        </div>
        <div class="">
          <div class=""><br class="">
          </div>
        </div>
        <div class="">
          <div class="">io:::start</div>
        </div>
        <div class="">
          <div class="">{</div>
        </div>
        <div class="">
          <div class="">        this-&gt;unit_number =
            args[1]-&gt;unit_number &gt;= 0 ?
            (string)args[1]-&gt;unit_number : "";</div>
        </div>
        <div class="">
          <div class="">        @[args[1]-&gt;device_name,
            this-&gt;unit_number, execname, pid] =
            sum(args[0]-&gt;bio_bcount);</div>
        </div>
        <div class="">
          <div class="">}</div>
        </div>
        <div class="">
          <div class=""><br class="">
          </div>
        </div>
        <div class="">
          <div class="">END</div>
        </div>
        <div class="">
          <div class="">{</div>
        </div>
        <div class="">
          <div class="">        printf("%10s%-3s %20s %10s %15s\n",
            "DEVICE", "", "APP", "PID", "BYTES");</div>
        </div>
        <div class="">
          <div class="">        printa("%10s%-3s %20s %10d %15@d\n", @);</div>
        </div>
        <div class="">
          <div class="">}</div>
        </div>
      </blockquote>
      <div class="">
        <div class=""><br class="">
        </div>
      </div>
      <div class="">(Of course, the `(string)` cast does not work here
        because it's just not how DTrace works.)</div>
      <div class=""><br class="">
      </div>
      <div class="">Best,</div>
      <div class="">Mateusz</div>
    </blockquote>
  </body>
</html>

--------------1viIHluN1HYGP4F0X3I01dDB--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?cce03483-a994-777d-dae0-d28ed779aadd>