rust-for-linux.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Hanqing Zhao <ouckarlzhao@gmail.com>
To: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
Cc: rust-for-linux <rust-for-linux@vger.kernel.org>
Subject: Re: [Question] import third-party crates in kernel modules
Date: Mon, 26 Apr 2021 15:10:40 -0400	[thread overview]
Message-ID: <CAKmvQ+UGiKVchv3DpR-QhyWqQ6-kx9HETNUcZqAv+An0ZgQwCg@mail.gmail.com> (raw)
In-Reply-To: <CANiq72knPX3GHHPPrZ=ErgX=1DttMXjOShcA1ZF4TENzNRaWzg@mail.gmail.com>

Hi Miguel,

I am actually writing a new alloc crate for linux kernel.

I aim to implement it as a cross-platform crate, which can be
used both in kernel and userland.

In general,
I currently have
- a faster lazy_static crate: static_init (https://crates.io/crates/static_init)
- crates for writing cfg easier: cfg_if (https://crates.io/crates/cfg_if)
- rand for random number generation (https://crates.io/crates/rand)
- syn for my heuristic marcos

Because my crate supports userspace as well,
it has some userland dependencies like
libc, winapi, criterion, and bencher (for benchmarking),
even if they won't be compiled for supporting kernel
allocation.

Of course, I can somehow remove those dependencies by replicating
them in my crate though.

Furthermore, I currently have dynamically generated codes in build.rs,
according to cpu numbers, cpu features, etc.

I think it would be better if we can import 3rd-party crates while
developing and testing our own kernel modules,
i.e., we do not need to guarantee that the kernel module having
3rd-party dependencies can become an in-tree module,
but we can compile a .ko that has a 3rd-part dependency
during offline development and testing.

Best,
Hanqing Zhao
Georgia Tech

On Mon, Apr 26, 2021 at 2:32 PM Miguel Ojeda
<miguel.ojeda.sandonis@gmail.com> wrote:
>
> Hi Hanqing,
>
> On Mon, Apr 26, 2021 at 7:01 PM Hanqing Zhao <ouckarlzhao@gmail.com> wrote:
> >
> > Is it possible to import third-party crates in the kernel modules?
> > (e.g., crates on crates.io)
> >
> > Any suggestions to import crates while writing kernel modules?  TIA.
>
> Which crates do you need? We may end up importing some things into the
> kernel (such as `alloc` and `syn`), but we do not plan to depend on
> crates.io (offline or otherwise).
>
> Cheers,
> Miguel

  reply	other threads:[~2021-04-26 19:10 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-26 17:01 [Question] import third-party crates in kernel modules Hanqing Zhao
2021-04-26 18:32 ` Miguel Ojeda
2021-04-26 19:10   ` Hanqing Zhao [this message]
2021-04-26 20:20     ` Miguel Ojeda
2021-04-26 20:41       ` Hanqing Zhao
2021-04-26 23:16         ` Miguel Ojeda
2021-04-27  1:28         ` Wedson Almeida Filho
2021-04-26 23:54       ` Kajetan Puchalski
2021-04-27  0:36         ` Miguel Ojeda

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAKmvQ+UGiKVchv3DpR-QhyWqQ6-kx9HETNUcZqAv+An0ZgQwCg@mail.gmail.com \
    --to=ouckarlzhao@gmail.com \
    --cc=miguel.ojeda.sandonis@gmail.com \
    --cc=rust-for-linux@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).